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

upload-labs靶场通关详解:第6-9关

目录

第六关:大小写绕过

一、分析源代码

二、解题思路

三、解题步骤

第七关:空格绕过

一、分析源代码

二、解题思路

三、解题步骤

第八关:点号绕过

一、分析源代码

二、解题思路

三、解题步骤

第九关:::$DATA字符串绕过

一、分析源代码

二、解题思路

三、解题步骤


第六关:大小写绕过

一、分析源代码

$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 = 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.'/'.date("YmdHis").rand(1000,9999).$file_ext;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件类型不允许上传!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

通过分析源代码发现,这一关把.ini也给限制了。但是,仔细观察,发现它和上一关的代码比起来,漏掉了一行代码,这行代码就是转换为小写。

二、解题思路

在PHP中,大小写区分是存在一定的规则。我们尝试使用PHP这个大写后缀,尝试绕过。

三、解题步骤

1.将一句话木马的后缀改成大写的PHP。

2.上传文件,显示成功,说明改成大写是可以绕过的。

3.复制图片地址,查看木马是否被成功解析。

第七关:空格绕过

一、分析源代码

(第七关)

(第五关)

我们发现它少了“首位去空”这行代码,因此猜想解题步骤和第六关应该是差不多的。

二、解题思路

“首尾去空” 是编程中处理字符串时的一种常见操作,指的是去除字符串开头和结尾的空白字符,保留中间的有效内容。这一操作也被称为字符串修剪(Trimming),在数据清洗、文本处理和用户输入验证中经常用到。

windows文件系统的特性是:不允许文件名以空格结尾,创建时会自动删除。

我们可以尝试在上传文件时加上空格绕过,当它保存在服务器上时空格又会被删除,就成功保存了php文件。

三、解题步骤

1.上传666.php,利用bp工具进行拦截,在php后面加上空格,放行。

可以看到这里添加了空格。

2.验证木马是否能被成功解析。

第八关:点号绕过

一、分析源代码

(第八关)

(第五关)

少了“删除文件名末尾的点”这行代码,同前两关一样的道理。

二、解题思路

windows同样会删除文件名末尾的句点(.),同理绕过。

三、解题步骤

1.上传666.php,利用bp工具进行拦截,在php后面加上句点(.),放行。

2.上传成功,验证木马是否能被解析。

第九关:::$DATA字符串绕过

一、分析源代码

(第九关)

(第五关)

少了“去除字符串::$DATA ”这行代码,和前几关一样。

二、解题思路

::$DATA 是 NTFS 文件系统中访问数据流的语法格式,用于标识文件的主数据流或备用数据流。这里不用过多理解,模仿前几关在文件名后缀加上这个字符串尝试去绕过上传。

三、解题步骤

1.上传666.php,利用bp工具进行拦截,在php后面加上::$DATA ,放行。

2.上传成功,验证木马是否能被解析。

http://www.xdnf.cn/news/6361.html

相关文章:

  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- MCP内幕解析
  • css画图形
  • 海康立体相机3DMVS软件使用不同工作模式介绍
  • vue3项目中使用CanvasEditor开箱即用(组件的形式,组件封装好了)
  • AI数字人融合VR全景:从技术突破到可信场景落地
  • Hive PredicatePushDown 谓词下推规则的计算逻辑
  • Springboot3自定义starter笔记
  • 数据科学和机器学习的“看家兵器”——pandas模块 之五
  • AI实时对话的通信基础,WebRTC技术综合指南
  • 网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】
  • WebRTC技术下的EasyRTC音视频实时通话SDK,助力车载通信打造安全高效的智能出行体验
  • day 17 无监督学习之聚类算法
  • Swagger go中文版本手册
  • 虚拟Python 环境构建器virtualenv安装(macOS版)
  • Prometheus监控系统部署
  • AI 治理进行时:网信办审核加速,AI 合规刻不容缓
  • 2025.05.14华为机考笔试题-第二题-200分
  • C#语法基础
  • 第30节:现代CNN架构-轻量级架构EfficientNet
  • mysql:如何查询版本号与社区版/企业版
  • 算法分析:蛮力法
  • Redis--基础知识点--27--redis缓存分类树
  • 计算机视觉----基于锚点的车道线检测、从Line-CNN到CLRNet到CLRKDNet 本文所提算法Line-CNN 后续会更新以下全部算法
  • OneNote内容太多插入标记卡死的解决办法
  • 在Rocky Linux 9.5上部署MongoDB 8.0.9:从安装到认证的完整指南
  • 【HTML】个人博客页面
  • 为什么浏览器设置代理ip后不能上网?原因与对应解决方案
  • maven报错 You have to use a classifier to attach supplemental artifacts
  • XBL6501/02/03在POE设备上的应用方案
  • JSX语法介绍