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 小时前
H5安全风险与防护策略:构建可信的移动互联网服务
web安全
bleach-3 小时前
buuctf系列解题思路祥讲--[SUCTF 2019]CheckIn1--文件上传以及user.ini的应用
nginx·web安全·网络安全·php
dalerkd18 小时前
忙里偷闲叙-谈谈最近两年
网络·安全·web安全
菩提小狗21 小时前
Sqlmap双击运行脚本,双击直接打开。
前端·笔记·安全·web安全
菩提小狗1 天前
SQL注入之sqlmap|web安全|渗透测试|网络安全
数据库·sql·web安全
zhengfei6111 天前
【Slack 安全工具箱】—— 多维度一体化安全管理平台
网络·安全·web安全
菩提小狗1 天前
sqlmap输入命令回车自动退出故障排查
笔记·安全·web安全
军哥系统集成号1 天前
2026网络安全法修订落地:企业六类法定强制评估合规指南(附协同实施路径)
网络·安全·web安全
晓幂2 天前
【2025】HECTF
笔记·学习·web安全
上海云盾-高防顾问2 天前
中小企业低成本渗透测试实操指南
网络协议·web安全·网络安全