[题目信息]:
题目名称 | 题目难度 |
---|---|
文件上传-黑名单关键字绕过 | 1 |
[题目考点]:
黑名单文件后缀名检测
[Flag格式]:
SangFor{bvgizCoInMSfB5PKETz5W-e4Tn56XXra}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
端口:11005
[题目writeup]:
1、实验主页

2、对于上传点的测试思路
正在上传...重新上传取消
3、上传标准图片文件

可以看到图片正常上传
正在上传...重新上传取消
F12或者邮件审查元素,打开控制台,使用该按钮点击图片,可以发现图片上传位置;

上传1.php文件并抓包
正在上传...重新上传取消
对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。
举例几种常见的后缀名:
".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",
在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;
至于如何知晓哪些后缀没有被限制,可以使用 burpsuite 批量上传来测试后缀名。
首先随意抓取一个 request 请求包发送给 intrude:
接着添加以下 payload 并开始攻击:
php
php7
php5
php4
php3
php2
php1
html
htm
phtml
pHp
Php
phP
pHp5
pHp4
pHp3
pHp2
pHp1
php.
php. .
php
正在上传...重新上传取消
正在上传...重新上传取消
复制文件后缀,开始爆破;
正在上传...重新上传取消
可在Response模块查看回显结果

访问php3后缀文件,成功解析为php。
那么为什么php3后缀的文件会被作为php文件成功解析呢?
在apache2服务器的配置文件apache.conf中

有AddType模块

该配置模块规定了哪些后缀可以被视为php文件解析;