1.前言
完成第一关后,第二关的防护升级了——后端开始检查文件的MIME类型。这次用‘Burp Suite’抓包修改‘Content-Type’,成功绕过
2.环境准备
靶场:upload-labs pass-02
地址:http://127.0.0.1/upload-labs/Pass-02
测试文件:test.php
文件内容:
<?php phpinfo(); ?>
3.尝试上传
直接上传‘test.php’,页面提示“文件类型不正确”
4.抓包分析
配置burp代理,拦截上传请求。找到关键字段:‘Content-Type:application/x-php’
图一:burp抓包截图
![]()
5.修改请求
将‘Content-Type’的值从‘application/x-php’修改为‘image/jpeg’
6.上传成功
点击‘Forward’放行,浏览器显示上传成功
图二:浏览器上传成功页面截图

7.验证结果
访问‘http://127.0.0.1/upload-labs/upload/test.php’,看到PHP信息页面
图三:phpinfo()页面截图
8.原理分析
第二关在后端检查‘Content-Type’字段。修改为image/jpeg后,服务器误以为这是图片,放行了 PHP 文件。这说明 MIME 类型完全由客户端控制,不可信任
9.修复建议
不要信任‘Content-Type’,它可被轻松修改
使用‘getimagesize() ’等函数检查文件真实内容
结合文件头(如 JPEG 的 FF D8 FF)验证类型
10.总结
第二关让我理解到了:后端的MIME验证同样不可靠。真正的防御应该基于文件内容检测。
**免责声明**:本文所有操作均在自建虚拟机环境中完成,仅用于网络安全学习与研究。严禁用于任何非法用途,违者自行承担后果。

554

被折叠的 条评论
为什么被折叠?



