• upload-labs关卡11(双写后缀名绕过)通关思路



    前言

    此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


    一、回顾前几关知识点

    前几关源代码是验证去除末尾点、首尾去空、大小写过滤以及data流过滤。都是基于window特性绕过的。这一关的源代码就不太一样了,让我们瞧一瞧。

    二、靶场第十一关通关思路

    • 1、看源代码
    • 2、bp抓包双写后缀名绕过
    • 3、检查文件是否成功上传

    1、看源代码

    $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","ini");
    
            $file_name = trim($_FILES['upload_file']['name']);
            $file_name = str_ireplace($deny_ext,"", $file_name);
            $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 = UPLOAD_PATH . '文件夹不存在,请手工创建!';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    发现源代码大改,和之前不一样了。发现这串核心代码$file_name = str_ireplace($deny_ext,"", $file_name);意思是如果上传的文件后缀名在黑名单中,就会把此后缀名替换为空。但是这个代码只执行一次,那么我双写后缀名是不是就可以绕过了呢。

    2、bp抓包双写后缀名绕过

    因为php在黑名单里,应该会被替换为空。我们先上传123.php,看看是不是我们所说的把php后缀名替换为空。(如图所示)
    在这里插入图片描述
    发现是被替换了,那么我们就有思路了。如果后缀名是pphphp是不是就会把中间的php替换为空,最终变成php后缀名了呢?我们试一试(如图所示)
    在这里插入图片描述

    3、检查文件是否成功上传

    发现上传成功
    在这里插入图片描述
    在这里插入图片描述
    如果上传的是一句话木马就可以连接菜刀了。

    总结

    这一关利用的是由于验证代码中只验证了一次,造成我们可以双写进行绕过,就和之前点空格绕过一样,因为只验证一次,我们可以多写来绕过。此文章是小白自己为了巩固文件上传漏洞而写的,大佬路过请多指教!

  • 相关阅读:
    vue下载Excel文件
    汽车Type-C接口:特点与要求解析
    Web基础与HTTP协议
    STL简介
    A-LEVEL经济知识点讲解:国际收支的结构
    HTML学生个人网站作业设计:个人主页博客web网页设计制作 (HTML+CSS) (1)
    基于企鹅优化算法的机器人轨迹规划(Matlab代码实现)
    Vue之安装Vue.js devtools
    open clip论文阅读摘要
    基于FPGA双路GMSL接收
  • 原文地址:https://blog.csdn.net/zyh1588/article/details/134468674