网络安全 文件上传漏洞-19 第十九关 Pass-19

点击进入第十九关,并选择显示代码:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");

        $file_name = $_POST['save_name'];
        $file_ext = pathinfo($file_name,PATHINFO_EXTENSION);

        if(!in_array($file_ext,$deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) { 
                $is_upload = true;
            }else{
                $msg = '上传出错!';
            }
        }else{
            $msg = '禁止保存为该类型文件!';
        }

    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}
代码以及漏洞分析

我们发现文件通过$_POST["save_name"]的方式获取并定义保存的文件名,然后对该文件名的后缀进行黑名单验证。但并未文件名进行特殊字符的过滤,那么我们可以由此提交我们的木马文件,首先打开bp进入监听状态,然后上传一个php木马文件:

我们可以使用徐迪种方法通过本关,下面列举出其中一部分:

php后缀名后面加点 进行绕过 

修改save_name值中 文件名的后缀为php.

点击foward,发现上传成功。此时右键单击复制文件地址,并在浏览器进行访问,成功获取服务器php信息:

大小写绕过 

修改save_name值中文件名的后缀为PHP

点击foward,发现上传成功。此时右键单击复制文件地址,并在浏览器进行访问,成功获取服务器php信息:

00截断

修该后缀名jpg为php%00.jpg,然后对%00 进行url编码(post请求需要我们手动编码)

点击foward,发现上传成功。此时右键单击复制文件地址,并在浏览器进行访问。删除url链接php后面的多余字符串然后回车,成功获取服务器php信息:

php后加空格

修改save_name值中文件名的后缀为php,然后再点击一下(两下也行)空格键点击foward,发现上传成功。此时右键单击复制文件地址,并在浏览器进行访问,成功获取服务器php信息:

使用::$DATA

修改save_name值中文件名的后缀为php::$DATA,然后forward提交,发现文件成功上传

此时右键单击复制文件地址,并在浏览器进行访问。删除url链接php后面的多余字符串然后回车,成功获取服务器php信息

上一关(网络安全 文件上传漏洞-18 第十八关 Pass-18

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值