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、检查文件是否成功上传

发现上传成功

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

总结

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

相关推荐
安全系统学习1 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
江苏思维驱动智能研究院有限公司4 小时前
Sophos 网络安全:全球领先的自适应安全解决方案提供商
网络·安全·web安全
浩浩测试一下11 小时前
渗透信息收集- Web应用漏洞与指纹信息收集以及情报收集
android·前端·安全·web安全·网络安全·安全架构
Fortinet_CHINA13 小时前
工业网络安全新范式——从风险可见性到量化防御的进化
安全·web安全
网安小白的进阶之路15 小时前
A模块 系统与网络安全 第三门课 网络通信原理-3
网络·windows·安全·web安全·系统安全
HumanRisk15 小时前
HumanRisk-自动化安全意识与合规教育平台方案
网络·安全·web安全·网络安全意识教育
安全系统学习1 天前
【网络安全】Mysql注入中锁机制
安全·web安全·网络安全·渗透测试·xss
缘友一世1 天前
网安系列【4】之OWASP与OWASP Top 10:Web安全入门指南
安全·web安全
安全系统学习2 天前
网络安全之SQL RCE漏洞
安全·web安全·网络安全·渗透测试
聚铭网络2 天前
案例精选 | 某省级税务局AI大数据日志审计中台应用实践
大数据·人工智能·web安全