Upload-labs Pass-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 . '文件夹不存在,请手工创建!';
    }
}

有一个新函数之间没见过的,pathinfo,去查了下。在这里插入图片描述
这里也没有什么其他的问题,就是要利用这个黑名单来完成绕过了。查了其他的writeup后,发现move_uploaded_file()还有这么一个特性,会忽略掉文件末尾的/.。而代码中的file_name是用户可控的,这就给了我们可以利用的地方,上传一个图片马,将保存名字改为upload-19.php/.
在这里插入图片描述
上传后,拿到图片地址。
在这里插入图片描述
直接访问地址即可,访问地址时,后面的/.加不加都可以,服务器后面是没有这个/.的,而且在Linux中也可以成功执行,是最新的apache解析漏洞CVE-2017-15715 ,这里更正一下,这里不应该是最新的解析漏洞,这里仅仅应该是绕过了黑名单而已。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值