当前位置: 首页 > news >正文

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

一、分析源代码

$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",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//删除文件名末尾的点$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //首尾去空if (!in_array($file_ext, $deny_ext)) {$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 = '此文件类型不允许上传!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

通过6-9关的练习,我们掌握了4种绕过方式,但是这关的代码将4种方式都进行了过滤,那么又该用什么思路呢?

二、解题思路

没有完美的代码,如果找不到代码的缺漏之处,那就尝试找到代码的逻辑错误。这里的代码进行了4种过滤,如果采用多次结合的方法去尝试呢?比如,我在文件后缀名加上点,再加上空格,再加上点。代码在执行时,按照顺序,首先会删除点,再删除空格,这样看起来就似乎没什么问题了。可是文件后缀此时还是存在一个句点没有被删除,那是否就产生了绕过的可能?试一试便知。

三、解题步骤

1.上传666.php并抓包,将文件后缀加上点空格点。

2.放行,发现文件上传成功,测试木马,被成功解析,绕过完成。

相关文章:

  • 【算法专题十四】BFS解决FloodFill算法
  • Web前端开发:@media(媒体查询)
  • 解决使用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss“, timezone = “GMT+8“)时区转换无效的问题
  • 测试开发面试题:Python高级特性通俗讲解与实战解析
  • 5个开源MCP服务器:扩展AI助手能力,高效处理日常工作
  • 永磁同步电机高性能控制算法(22)——基于神经网络的转矩脉动抑制算法为什么低速时的转速波动大?
  • JavaScript 系列之:数组、树形结构等操作
  • Android设备 显示充电速度流程
  • 掌握Git:版本控制与高效协作指南
  • netcore项目使用winforms与blazor结合来开发如何按F12,可以调出chrome devtool工具辅助开发
  • 深入浅出IIC协议 -- 第二篇:FPGA数字接口设计方法论
  • 基于Java在高德地图面查询检索中使用WGS84坐标的一种方法-以某商场的POI数据检索为例
  • Flutter 中的 async/await 和 Future
  • 全能视频处理工具介绍说明
  • 大语言模型 12 - 从0开始训练GPT 0.25B参数量 MiniMind2 补充 训练开销 训练步骤 知识蒸馏 LoRA等
  • JavaScript 性能优化实战指南
  • 《JVM如何判断一个对象可以被回收?图文详解GC Root算法》
  • 深度解析:Redis 性能优化全方位指南
  • Python操作PDF书签详解 - 添加、修改、提取和删除
  • AI量化交易是什么?它是如何重塑金融世界的?
  • 一座与人才共成长的理想之城,浙江嘉兴为何如此吸引人?
  • 著名古人类学家高星获推选为国际史前与原史研究院院士
  • 鸿蒙电脑正式发布,国产操作系统在个人电脑领域实现重要突破
  • 大学2025丨苏大教授王尧:文科最大的危机是阐释世界的能力弱化
  • 香港今年新股集资额已超600亿港元,暂居全球首位
  • 海外市场,押注中国无人驾驶龙头