1. 初识upload-labs靶场
第一次接触upload-labs这个靶场时,我就像发现了一个宝藏。这个用PHP编写的靶场专门收集了各种文件上传漏洞场景,从最基础的前端验证绕过,到复杂的二次渲染突破,19个关卡层层递进,简直就是学习文件上传漏洞的活教材。
记得刚开始做第一关时,我傻乎乎地直接上传了一个PHP文件,结果页面提示"文件类型不允许"。当时还纳闷,明明文件内容没问题啊。后来查看网页源代码才发现,原来靶场在前端用JavaScript做了简单的文件类型检查。这种前端验证在实际渗透测试中经常遇到,看似唬人,实则形同虚设。
靶场的环境搭建也很简单,我用的是PHPStudy,下载源码解压后放到WWW目录就能直接运行。建议新手在本地搭建环境时,注意PHP版本的选择,特别是后面涉及到%00截断的关卡,需要PHP版本低于5.3.4才能复现。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 前端验证的三种破解之道
2.1 禁用JavaScript的暴力解法
第一关的JS验证是最基础的前端防护。我最开始用的方法简单粗暴 - 直接禁用浏览器JavaScript。以Chrome为例:
- 按F12打开开发者工具
- 按下Ctrl+Shift+P调出命令面板
- 输入"Disable JavaScript"并执行
- 刷新页面后就可以直接上传任意文件了
不过这种方法在实际渗透中局限性很大。很多网站禁用JS后根本无法正常使用,而且现在越来越多的站点采用混合验证策略,光绕过前端是远远不够的。
2.2 重构HTML表单的精准打击
更稳妥的方法是直接修改网页HTML代码:
- 右键查看网页源代码
- 复制全部代码到文本编辑器
- 删除与文件验证相关的JavaScript代码
- 添加form的action属性指向真实的上传接口
- 保存为HTML文件后用浏览器打开
这个方法的关键在于找到真实的上传接口地址。我通常的做法是:
- 正常上传一个合法文件(如图片)
- 在开发者工具的Network面板查看请求详情
- 记录下真实的POST请求地址
2.3 BurpSuite拦截修改的进阶技巧
对于专业的安全测试,我更推荐使用BurpSuite:
- 配置浏览器代理到BurpSuite
- 正常选择PHP文件上传
- 在Burp的Proxy模块拦截请求
