UploadLabs第5关完整通关笔记:从原理到踩坑排错

admin 2026-03-03 05:36:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档详述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();&nbsp;?>

上传并访问:


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 关完整通关笔记:从原理到踩坑排错》

评论:0   参与:  0