php竞争问题,结合 CTF 详解条件竞争漏洞

什么是条件竞争漏洞?

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。

漏洞分析

假设有这么一个代码,实现用户上传图片功能

if(isset($_GET['src'])){

copy($_GET['src'],$_GET['dst']);

//...

//check file

unlink($_GET['dst']);

//...

}

?>

该代码中通过

copy($_GET['src'],$_GET['dst'])

将上传的文件从源地址转换到目的地址进行储存。

然后通过中间一系列 check file 代码,检查文件的安全性,如果发现该文件为不安全文件则使用 unlink 删除该文件。

但是如果判断时间过长,在该不安全文件被判定性质并且删除之前执行了该文件则会导致系统漏洞的形成。

漏洞利用思路

攻击者上传了一个用来生成恶意 shell 的文件,在上传完成和安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求的方法访问了该文件,该文件就会被执行,并且在服务器上生成一个恶意 shell 的文件。至此,该文件的任务就已全部完成,至于后面发现它是一个不安全的文件并把它删除的问题都已经不重要了,因为攻击者已经成功的在服务器中植入了一个 shell 文件,后续的一切就都不是问题了。

漏洞利用详细步骤

1.抓包并根据过滤条件修改后发送到 Intruder 模块开多线程不断发包,使 WEB 服务不断接受该文件。

4f360de96f5a735af429b6fd9004533f.png

2.然后写一个 python 脚本不断去访问那个文件,如果在 WEB 服务判定并删除不安全文件之前成功的访问则会达到效果。

import requests

url = '你的文件路径'

while 1:

r = requests.get(url)

if 'moctf' in r.text:

print r.text

相关 CTF 题目

moctf web-没时间解释了

进入题目发现 URL 为 index2.php,尝试访问 index.php 发现存在短暂跳转。抓包后发现

132dd94a4008b877d6cd46015fb06be1.png

访问这个网页,发现为上传界面,随便输入两个值

0ad2c324b8968e5dca72db4ea79b3904.png

访问这个网址后被告知太慢了,猜测可能为时间竞争类型。

使用 burp 多线程并发提交

抓取输入界面的包

912d09037d15dc60fcd270b14bc977e9.png

sent to Intruder

3a4cb9fe33c5eba2016f277c70916ca4.png

访问 Too slow 的页面并抓包

77419b0b136ab776d3828e848be48cf9.png

配置 Intruder

5490ab47f8a5a38c5b3aca225f161a9a.png

d0bbe86255994633102bb5f685491ab5.png

两个配置相同

同时启动两个 Attack 进程,在 Too slow 页面发现 flag

26579ffc68d0c65e089f53b6b711efcb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值