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

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

一、分析源代码

代码注释如下:

<?php
// 初始化上传状态和消息变量
$is_upload = false;
$msg = null;// 检查是否通过POST方式提交了表单
if (isset($_POST['submit'])) {// 检查上传目录是否存在if (file_exists(UPLOAD_PATH)) {// 定义禁止上传的文件扩展名列表(包含常见的脚本文件类型)$deny_ext = array('.asp','.aspx','.php','.jsp');// 获取上传文件的原始名称$file_name = trim($_FILES['upload_file']['name']);// 调用自定义函数删除文件名末尾的点(某些系统允许文件名以点结尾,但可能被解析为其他类型)$file_name = deldot($file_name);// 获取文件扩展名(包含点)$file_ext = strrchr($file_name, '.');// 将扩展名转换为小写(确保扩展名检查不区分大小写)$file_ext = strtolower($file_ext);// 去除Windows文件流标记(例如.php::$DATA会被解析为.php文件)$file_ext = str_ireplace('::$DATA', '', $file_ext);// 去除扩展名前后的空白字符$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 = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';}} else {// 上传目录不存在$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}
?>

通过代码注释可以得出,这关是黑名单验证,不允许上传.asp,.php,.jsp等后缀文件,并且对上传的文件进行了处理,比如删除末尾的点,转换大小写等,并且将上传的文件重命名后再移动到指定的目录。

二、解题思路

我们可以尝试修改后缀名的方式来绕过验证。在php5.2.17版本中,可以通过修改配置文件完成相关操作。

AddType application/x-httpd-php .php .phtml .php3 .php4 .php5是一条 Apache HTTP 服务器配置指令,用于告诉服务器将特定文件扩展名(如 .php、.phtml、.php3、 .php4 、.php5)的文件识别为 PHP 脚本,并使用 PHP 解释器进行处理。

通俗意思就是你上传的xxx.php3文件,服务器会当成xxx.php文件来执行。

三、解题步骤

1.修改配置文件,找到htttpd-conf这个配置文件,在里面添加一条数据,保存并退出。如下:

 AddType application/x-httpd-php .php .phtml .php6

2.将一句话木马的后缀改成php6,然后尝试上传文件,结果显示上传成功。

3.找到上传后的木马文件路径,验证是否可以使用。

检查网页代码,通过html标签找到文件路径,或者直接右击,复制图片地址。

去文件目录下执行,成功。

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

相关文章:

  • 【漫话机器学习系列】249.Word2Vec自然语言训练模型
  • 十二、基于大模型的在线搜索平台——信息抓取
  • 智能网联汽车 “中央计算” 博弈:RTOS 与跨域融合的算力分配挑战
  • 网络研讨会开发注册中, 5月15日特励达力科,“了解以太网”
  • stm32之USART
  • Day 15 训练
  • OpenHarmony平台驱动开发(十一),PIN
  • 线程的生命周期·
  • [计算机科学#13]:算法
  • 探秘 InSAR:数据处理与形变信息提取全解析
  • centos 7 安装 java 运行环境
  • 左支座加工工艺与钻φ25孔专用夹具设计
  • Bearer Token的神秘面纱:深入解析HTTP认证头的设计哲学
  • JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码
  • qxl显卡与spice模块笔记
  • 规则组,注入组
  • setData执行后操作方法-微信小程序
  • DeepResearch深度搜索实现方法调研
  • 在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器,安装教程
  • 嵌入式学习笔记 - 垂直消隐期
  • 自然语言处理-词性标注的基本概念
  • 黄金、碳排放期货市场API接口文档
  • 【阿里云免费领取域名以及ssl证书,通过Nginx反向代理web服务】
  • BUUCTF——杂项渗透之赛博朋克
  • 操作系统导论——第27章 插叙:线程API
  • softmax传递函数+交叉熵损失
  • ACTF2025 - Web writeup
  • C++编程语言:标准库:标准库概观(Bjarne Stroustrup)
  • 第六章 进阶09 我的人才观
  • 【设计模式】GoF设计模式之策略模式(Strategy Pattern)