文件上传漏洞总结


对各种基本文件上传漏洞进行总结

0x01 PASS-01


pass-01源代码:

function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;
    if (file == null || file == "") {
        alert("请选择要上传的文件!");
        return false;
    }
    //定义允许上传的文件类型
    var allow_ext = ".jpg|.png|.gif";
    //提取上传文件的类型
    var ext_name = file.substring(file.lastIndexOf("."));
    //判断上传文件类型是否允许上传
    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
        alert(errMsg);
        return false;
    }
}

通过查看源代码发现该题目为前端校验,只需要抓包后更改文件后缀即可。


成功。

0x02 PASS-02


pass-02源代码:

$is_upload = false;
$msg = null;
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和文件头检测,与第一题类似。


成功。

0x03 PASS-03



文章作者: 你的朋友
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 你的朋友 !
 上一篇
2018美亚杯个人赛 2018美亚杯个人赛
由于版权原因,本文涉及的工具、镜像均不提供下载。 案情信息1.林胜(Victor)是一名三十岁的中学教师。一天,他在家中使用计算机期间,收到一封勒索邮件,其中列出他电子邮件用户名和密码,及其他個人资料,並声称他的用户数据已被窃取,计算机已被
2020-11-12
下一篇 
MYSQL显错注入 MYSQL显错注入
对Mysql显错注入和联合查询进行记录整理
2020-06-26