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

文章目录


前言

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


一、回顾前几关知识点

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

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

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

1、看源代码

php 复制代码
$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 . '文件夹不存在,请手工创建!';
    }
}

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

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

因为php在黑名单里,应该会被替换为空。我们先上传123.php,看看是不是我们所说的把php后缀名替换为空。(如图所示)

发现是被替换了,那么我们就有思路了。如果后缀名是pphphp是不是就会把中间的php替换为空,最终变成php后缀名了呢?我们试一试(如图所示)

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

发现上传成功

如果上传的是一句话木马就可以连接菜刀了。

总结

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

相关推荐
一次旅行2 天前
网络安全总结
安全·web安全
一名优秀的码农2 天前
vulhub系列-14-Os-hackNos-1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
努力的lpp2 天前
SQLMap CTF 常用命令全集
数据库·web安全·网络安全·sql注入
努力的lpp2 天前
SQL 报错注入
数据库·sql·web安全·网络安全·sql注入
上海云盾商务经理杨杨2 天前
2025年重大网络安全事件回顾与趋势分析
网络·安全·web安全
岛屿旅人3 天前
2025年中东地区网络安全态势综述
网络·安全·web安全·网络安全
上海云盾商务经理杨杨3 天前
2026年企业网络安全方向预防预测:在AI工业化时代构建主动免疫体系
人工智能·安全·web安全
努力的lpp3 天前
【ctf常用备用文件名字典】
web安全·网络安全·ctf
志栋智能3 天前
安全超自动化:从被动防御到主动响应的革命
运维·网络·数据库·人工智能·安全·web安全·自动化
合天网安实验室3 天前
H5渗透实战:从负数金额漏洞到签名绕过
web安全·漏洞挖掘·h5渗透·签名绕过