upload-labs靶场通关详解:第11关

一、分析源代码

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

这一关仍然是黑名单过滤,但是它的代码和前几关都不一样, 它这里有一行核心代码,就是

php 复制代码
$file_name = str_ireplace($deny_ext,"", $file_name);

str_ireplace是 PHP 内置函数,用于执行不区分大小写的字符串替换。

语法:str_ireplace(要查找的数组, 替换值, 输入字符串)

这行代码的执行逻辑就是:

1.遍历$deny_ext数组中的每个扩展名;

2.在$file_name中查找匹配项(不区分大小写);

3.将所有匹配的扩展名替换为空字符串(即删除)。

典型处理示例

原始文件名 处理后文件名 说明
shell.php shell. 直接移除.php扩展名
shell.php.jpg shell.jpg 仅移除第一个扩展名
shell.php5 shell. 移除 PHP 旧版本扩展名
SHELL.PHP shell. 大小写不敏感替换
.htaccess . 移除服务器配置文件
exploit.jsp.asax exploit. 同时移除多个危险扩展名

二、解题思路

现在我们知道它可以删除黑名单中的扩展名,那么这关的代码是否存在逻辑漏洞呢?联想第10关结合绕过的方式,是否可以再尝试多次绕过呢?如果我上传文件的后缀名为pphphp,代码从第一位字母p开始读取,读到2-4位的时候发现这三位字母是php,于是将它替换成空白字符(删除),这看起来没什么问题,代码执行下一步,构建路径上传文件。但是,这里的pphphp在php被删除后,后缀只剩下了php,然后被上传,从而构成了文件绕过,这就是双写绕过。

三、解题步骤

1.上传666.php并抓包,修改后缀为pphphp。

2.放行后显示文件上传成功,被保存为666.php。

3.解析测试。

相关推荐
北京耐用通信1 小时前
电力自动化新突破:Modbus如何变身Profinet?智能仪表连接的终极解决方案
人工智能·物联网·网络安全·自动化·信息与通信
汤愈韬2 小时前
NTFS权限基础、权限累加规则、权限继承规则
windows·网络安全
lingggggaaaa4 小时前
小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目
java·数据库·windows·笔记·学习·安全·网络安全
Bruce_Liuxiaowei9 小时前
Win7虚拟机加入域错误排查指南:解决无法启动服务问题
运维·网络·windows·安全·网络安全
mjhcsp19 小时前
博客安全攻防演练:从实战视角构建全方位防护体系
网络安全·博客
数字供应链安全产品选型19 小时前
国家级!悬镜安全入选两项“网络安全国家标准应用实践案例”
人工智能·安全·web安全
2401_8653825020 小时前
工信部发布→《云计算综合标准化体系建设指南(2025版)》
网络安全·云计算·信息安全技术
Bruce_Liuxiaowei1 天前
Windows系统错误6118全面解决方案:修复此工作组的服务器列表当前无法使用
运维·服务器·windows·网络安全
鹿鸣天涯1 天前
商用密码应用安全性评估
网络·安全·web安全
jieyu11191 天前
xxe靶场通关
安全·web安全