文章总结: 文档详述UploadLabs第5关通关过程,分析黑名单过滤机制与PHP运行模式差异。核心解法包括利用.user.ini配置文件在CGI模式下的自动包含特性上传图片马,以及利用Windows系统自动去除末尾点与空格的特性绕过检测。文章剖析源码逻辑与环境依赖,指出缓存刷新与代码格式等实战踩坑点,建议采用白名单机制与限制上传目录执行权限进行防御,强调利用机制差异进行攻击的思路。 综合评分: 90 文章分类: WEB安全,渗透测试,实战经验,CTF
2️⃣ PHP 运行模式决定攻击方式
在访问 phpinfo() 页面时,会看到:
Server API
常见两种:
| 模式 | 是否支持 .user.ini | | — | — | | Apache 2.0 Handler | ❌ 不支持 | | CGI/FastCGI | ✅ 支持 |
.user.ini 只在 CGI/FastCGI 模式下有效。因通过docker和xmapp搭建的靶场环境模式为Apache2.0 Handler,为了复现这个漏洞,所以我用phpstudy重新搭建了一次。
三、实战前必须确认:服务器是否支持 .user.ini
这一点非常关键。
📌 方法一:通过 phpinfo() 查看
第一步:创建 info.php
<?phpphpinfo(); ?>
上传并访问:
http://target/upload/info.php
第二步:查看 Server API
若显示:
CGI/FastCGI
说明可以使用 .user.ini。
2️⃣ 上传 .user.ini
autoprependfile=test.jpg
3️⃣ 访问任意 php 页面
如果页面顶部出现 test
说明 .user.ini 生效。
#
六、两种方式对比
| 对比项 | .user.ini | .空格. | | — | — | — | | 依赖环境 | PHP CGI | Windows | | 隐蔽性 | 高 | 中 | | 稳定性 | 高 | 看过滤强度 | | 技术深度 | 高 | 中 |
七、安全思考
这一关暴露两个常见错误:
❌ 错误一:仅做后缀黑名单过滤
应改为:
- 白名单机制
- 严格 pathinfo 判断
- 去除文件名末尾空格与点
❌ 错误二:上传目录允许脚本执行
应:
- 关闭上传目录 PHP 执行权限
- 或分离静态服务器
八、本关真正教会我们的是什么?
第 5 关不是在教技巧。
而是在教我们:
攻击的核心是“机制差异”
- PHP 配置机制
- 文件系统特性
- 过滤逻辑与实际执行逻辑的不一致
九、总结
Upload Labs 第 5 关两种核心绕过方式:
1️⃣ .user.ini —— 利用 PHP 配置覆盖
2️⃣ “.空格.” —— 利用 Windows 文件名处理机制
本质都是:
服务器解析逻辑 ≠ 过滤逻辑
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:武文学网安 武文 武文《Upload Labs 第 5 关完整通关笔记:从原理到踩坑排错》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论