条件竞争绕过

(15) 条件竞争之时间竞争(1关)

① 首先做了一个临时文件,若符合规则再上传写入

② 服务端为了效率,接收任意后缀文件,再一起使用程序来检查临时文件中上传的新文件(这其中是有时间差的(在上传文件分程序检查之间))

③ 攻击:先上传一个 shell.php(用来生成另外一个文件 ⇒ 不属于新文件,由后端代码生成的,在程序看来,于是不会再检查),再访问生成的文件

思路:上传大量名叫 shell.php 的文件,再发送大量请求 shell.php 的请求(若服务器处理特快,不一定能成功)

④ 用 BP 来攻击:并发数(线程数)为 3:一时间发 3 个请求

BP 抓包,发到 Intruder,不要 payload,在 payload 类型中选择 Null payloads

生成 payload 请求(选 3000),在资源池中,最大并发请求数越多越好(可能导致网站崩溃) 也可选无限重复

在浏览器中再输入 192.168.1.3/upload/upload/hu.php(假设请求 shell.php 生成 hu.php),同时 BP 抓到这个请求包,处理同上,Null payloads去访问(不过这一步我觉得不必要

注:默认资源池即可

客户端 —— 请求 shell.php
↓
服务端
↑
客户端 —— 上传 shell.php

即 BP 要开两个爆破,一个去上传 shell.php,一个去访问 shell.php 生成的 hu.php