您当前的位置: 首页 > 

星球守护者

暂无认证

  • 2浏览

    0关注

    641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

星球守护者 发布时间:2020-02-25 16:03:34 ,浏览量:2

文章目录
    • 第一章 服务器端检测--MIME 类型
    • 第二章代码审计-源代码
    • 第三章MIME服务器端绕过案例
        • 第一步 上传.jpg文件 上传成功 查看图片
        • 第二步 上传.php文件 查看提示错误信息
        • 第三步 使用burp抓包 更改type类型
        • 第四步 查看上传的是否成功执行
        • 第五步 上传一句话木马 蚁剑进行连接
    • 免责声明

第一章 服务器端检测–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类型

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

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

在这里插入图片描述

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

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

免责声明

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

关注
打赏
1662051426
查看更多评论
立即登录/注册

微信扫码登录

0.2100s