文件上传之服务端绕过(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
.js application/x-javascript
.html text/html
.jpg image/jpeg
.pdf application/pdf
.png image/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类型

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

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

在这里插入图片描述

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

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

免责声明

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

发布了278 篇原创文章 · 获赞 57 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_41901122/article/details/104499088