文件上传之服务端绕过(upload-labs第二关)

第一章 服务器端检测–MIME 类型

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
【https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types】
常见的MIME 类型如下

文件扩展名Mime-Type
.jsapplication/x-javascript
.htmltext/html
.jpgimage/jpeg
.pdfapplication/pdf
.pngimage/png

在HTTP 协议中,使用Content-Type 字段表示文件的MIME 类型。当我们上传文件的时候,抓到HTTP 数据包。

第二章代码审计-源代码

在服务器端会检测Content-Type 类型,upload-labs 第二关,经典的代码如下

if (isset($_POST['submit'])) {
    if (file_exists($UPLOAD_ADDR)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
                $img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name'];
                $is_upload = true;
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = $UPLOAD_ADDR.'文件夹不存在,请手工创建!';
    }
}

由于服务器在检测Content-Type 类型的时候,取得的变量来自于用户,所以可以用Burp 抓包,修改这个字段,使其合法,即可绕过限制上传任意文件。
在这里插入图片描述

第三章MIME服务器端绕过案例

第一步 上传.jpg文件 上传成功 查看图片

在这里插入图片描述在这里插入图片描述在这里插入图片描述

第二步 上传.php文件 查看提示错误信息

在这里插入图片描述在这里插入图片描述

第三步 使用burp抓包 更改type类型

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

第四步 查看上传的是否成功执行

在这里插入图片描述

第五步 上传一句话木马 蚁剑进行连接

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

免责声明

本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!
由于使用不当造成的后果上传者概不负责!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星球守护者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值