c0ny1/upload-labs文件上传漏洞之PHP文件上传GET截断Pass-11


本文记录Pass-11,后端白名单后缀名,而且从GET读存储路径,按照上传文件的后缀名保存文件。

查看代码

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

php 5.4.x<= 5.4.39, 5.5.x<= 5.5.23, 5.6.x <= 5.6.7会有move_uploaded_file($temp_file,'cmd.php00cmd.jpg')的截断漏洞,\00后的.jpg会被截断,最终保存的文件是1.php
使用burp修改请求
上传失败
上传失败了,查看实验环境php版本

root@6c74675472b8:/var/www/html/upload# php -v
PHP 5.5.38 (cli) (built: Aug 10 2016 21:03:27) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

秀啊,不是受影响的PHP版本,这个靶场已经第二次不能正常打靶了,上一次是不能执行.php%20文件。

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

转载:转载请注明原文链接 - c0ny1/upload-labs文件上传漏洞之PHP文件上传GET截断Pass-11


喜欢安全与WEB开发