upload-labs 靶场全解(全)
字数 1943 2025-08-10 08:28:15
Upload-Labs 靶场全解教学文档
前提条件
- 文件能够成功上传到服务器
- 攻击者能够知道文件的上传路径
Pass-01 (前端验证)
绕过方法:
- 禁用客户端JavaScript弹窗
- 通过Burp抓包修改后缀名
- F12删除
return filecheck()代码
步骤:
- 上传.php文件会出现弹窗
- 修改前端代码:关闭JavaScript弹窗或删除检查函数
- 上传成功后检查服务器目录
- 使用蚁剑连接获取文件路径
Pass-02 (MIME验证)
绕过方法:
- 上传php文件,修改Content-Type为合法类型
- 上传合法后缀文件,通过Burp修改文件后缀
步骤:
- 法一:修改Content-Type为
image/jpeg等合法类型 - 法二:上传时修改文件后缀为合法类型,Burp拦截后改回.php
Pass-03 (黑名单验证,特殊后缀名)
绕过方法:
- 尝试使用php环境支持的其他后缀:php1, php2, php3, php4, php5, phtml, pht
- 需要修改Apache的httpd.conf配置,添加这些后缀的解析
源码黑名单:
$deny_ext = array('.asp','.aspx','.php','.jsp');
Pass-04 (.htaccess绕过)
绕过方法:
- 上传.htaccess文件重写解析规则
- 文件内容示例:
<FilesMatch "xxx.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
或
AddType application/x-httpd-php .jpg
Pass-05 (.user.ini绕过)
绕过方法:
- 上传.user.ini文件,内容为:
auto_prepend_file=666.jpg
- 所有php文件都会自动包含666.jpg文件
Pass-06 (大小写绕过)
绕过方法:
- 将.php改为.Php等大小写混合形式
- 服务器未使用strtolower()函数统一转为小写
Pass-07 (空格绕过)
绕过方法:
- 在文件名后添加空格,如
shell.php - 服务器未使用trim()去除空格
Pass-08 (点号绕过)
绕过方法:
- 在文件名后添加点,如
shell.php. - 服务器未使用deldot()过滤末尾的点
Pass-09 (::$DATA绕过)
绕过方法:
- 使用Windows特性,在文件名后添加
::$DATA - 如
shell.php::$DATA
Pass-10 (点+空格+点绕过)
绕过方法:
- 使用
shell.php. .格式 - deldot()函数遇到空格会停止检测
Pass-11 (双写绕过)
绕过方法:
- 使用双写后缀,如
shell.pphphp - 服务器使用str_ireplace()替换黑名单后缀为空
Pass-12 (00截断GET型)
绕过方法:
- Apache版本需调至5.2.17,magic_quotes_gpc=off
- 使用
shell.php%00.jpg格式 - GET方式传参,%00会被解码为0x00截断
Pass-13 (00截断POST型)
绕过方法:
- 使用十六进制00截断,在Hex视图中修改
- POST不会自动解码%00,需手动修改
Pass-14 (图片马)
制作方法:
- 在图片头部添加格式标识(GIF89a/PNG等)
- 末尾添加一句话木马
- 通过文件包含漏洞执行
Pass-15 (getimagesize验证)
绕过方法:
- 使用正确的图片文件头
- 在图片中嵌入恶意代码
- 通过文件包含执行
Pass-16 (exif_imagetype验证)
绕过方法:
- 需开启php.exif扩展
- 同Pass-15方法,确保文件头正确
Pass-17 (二次渲染绕过)
绕过方法:
- 上传正常图片获取渲染前后不变的位置
- 使用010Editor等工具在不变位置插入恶意代码
- 通过文件包含执行
Pass-18 (条件竞争)
绕过方法:
- 快速多次上传恶意文件
- 在服务器删除前访问文件
- 使用Burp Intruder高频率发送请求
Pass-19 (路径问题+条件竞争)
绕过方法:
- 修改上传路径问题
- 同Pass-18方法,快速上传访问
Pass-20 (move_uploaded_file特性)
绕过方法:
- 利用move_uploaded_file忽略末尾/的特性
- 使用
shell.php/.格式
Pass-21 (复杂绕过)
备注:
- 需要更深入的分析和钻研
- 结合前面多种绕过方法尝试
通用技巧
- 图片马制作:
copy php.php/b + image.png output.png
- 蚁剑连接:
- 确保文件路径正确
- 测试连接时清理中间混杂内容
- 环境配置:
- 调整Apache版本和php.ini设置
- 确保相关扩展已开启
- 工具使用:
- Burp Suite抓包修改
- 010Editor分析文件结构
- 蚁剑进行连接测试
以上为upload-labs靶场全部关卡的详细解法,涵盖了前端验证、MIME类型、黑名单/白名单、各种特殊字符绕过、条件竞争等多种文件上传漏洞利用技术。