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标签找到文件路径,或者直接右击,复制图片地址。
去文件目录下执行,成功。
相关文章:

upload-labs靶场通关详解:第三关
一、分析源代码 代码注释如下: <?php // 初始化上传状态和消息变量 $is_upload false; $msg null;// 检查是否通过POST方式提交了表单 if (isset($_POST[submit])) {// 检查上传目录是否存在if (file_exists(UPLOAD_PATH)) {// 定义禁止上传的文件扩展名列表…...

星光云720全景VR系统升级版,720全景,360全景,vr全景,720vr全景
星光云720全景VR系统升级版,720全景,360全景,vr全景,720vr全景 星光云全景系统 系统体验地址 https://720.ailemon.cc 星光云全景新版体验地址 全景系统功能简介 基础设置:作品信息,加载样式ÿ…...

第十六节:图像形态学操作-顶帽与黑帽变换
一、引言:形态学操作的视觉魔法 在数字图像处理领域,形态学操作犹如一柄精巧的解剖刀,能够精准地提取图像特征、消除噪声干扰,并增强关键细节。OpenCV作为计算机视觉的瑞士军刀,提供了一套完整的形态学处理工具。在掌…...

将 iconfont 图标转换成element-plus也能使用的图标组件
在做项目时发现,element-plus的图标组件,不能像文档示例中那样使用 iconfont 的图标。经过研究发现,element-plus的图标封装成了vue组件,组件内容是一个svg,然后以组件的方式引入和调用图标。根据这个思路,…...

大模型系列(四)--- GPT2: Language Models are Unsupervised Multitask Learners
论文链接: Language Models are Unsupervised Multitask Learners 点评: GPT-2采用了与GPT-1类似的架构,将参数规模增加到了15亿,并使用大规模的网页数据集WebText 进行训练。正如GPT-2 的论文所述,它旨在通过无监督语…...
等保系列(三):等保测评的那些事
一、等保测评主要做什么 1、测评准备阶段 (1)确定测评对象与范围 明确被测系统的边界、功能模块、网络架构及承载的业务。 确认系统的安全保护等级(如二级、三级)。 (2)签订测评合同 选择具备资质的测…...

ABP vNext + EF Core 实战性能调优指南
ABP vNext EF Core 实战性能调优指南 🚀 目标 本文面向中大型 ABP vNext 项目,围绕查询性能、事务隔离、批量操作、缓存与诊断,系统性地给出优化策略和最佳实践,帮助读者快速定位性能瓶颈并落地改进。 📑 目录 ABP vN…...

高品质办公楼成都国际数字影像产业园核心业务
成都国际数字影像产业园的核心业务,围绕构建专业化的数字影像文创产业生态系统展开,旨在打造高品质、高效率的产业发展平台。 产业集群构建与生态运营 园区核心业务聚焦于吸引和培育数字影像及相关文创领域的企业,形成产业集聚效应。具体包…...

MindSpore框架学习项目-ResNet药物分类-构建模型
目录 2.构建模型 2.1定义模型类 2.1.1 基础块ResidualBlockBase ResidualBlockBase代码解析 2.1.2 瓶颈块ResidualBlock ResidualBlock代码解释 2.1.3 构建层 构建层代码说明 2.1.4 定义不同组合(block,layer_nums)的ResNet网络实现 ResNet组建类代码解析…...

【Spring Boot】Spring Boot + Thymeleaf搭建mvc项目
Spring Boot Thymeleaf搭建mvc项目 1. 创建Spring Boot项目2. 配置pom.xml3. 配置Thymeleaf4. 创建Controller5. 创建Thymeleaf页面6. 创建Main启动类7. 运行项目8. 测试结果扩展:添加静态资源 1. 创建Spring Boot项目 打开IntelliJ IDEA → New Project → 选择M…...
线程中常用的方法
知识点详细说明 Java线程的核心方法集中在Thread类和Object类中,以下是新增整合后的常用方法分类解析: 1. 线程生命周期控制 方法作用注意事项start()启动新线程,JVM调用run()方法多次调用会抛出IllegalThreadStateException(线程状态不可逆)。run()线程的任务逻辑直接调…...

学习spring boot-拦截器Interceptor,过滤器Filter
目录 拦截器Interceptor 过滤器Filter 关于过滤器的前置知识可以参考: 过滤器在springboot项目的应用 一,使用WebfilterServletComponentScan 注解 1 创建过滤器类实现Filter接口 2 在启动类中添加 ServletComponentScan 注解 二,创建…...
为啥大模型一般将kv进行缓存,而q不需要
1. 自回归生成的特点 大模型(如 GPT 等)在推理时通常采用自回归生成的方式: 模型逐个生成 token,每次生成一个新 token 时,需要重新计算注意力。在生成第 t 个 token 时,模型需要基于前 t-1 个已生成的 t…...

雷赛伺服L7-EC
1电子齿轮比: 电机圈脉冲1万 (pa11的值 x 4倍频) 2电机刚性: pa003 或者 0x2003 // 立即生效的 3LED显示: PA5.28 1 电机速度 4精度: PA14 //默认30,超过3圈er18…...

阅文集团C++面试题及参考答案
能否不使用锁保证多线程安全? 在多线程编程中,锁(如互斥锁、信号量)是实现线程同步的传统方式,但并非唯一方式。不使用锁保证多线程安全的核心思路是避免共享状态、使用原子操作或采用线程本地存储。以下从几个方面详…...

AVL树:保持平衡的高效二叉搜索树
目录 一、AVL树的概念 1. 二叉搜索树的局限性 2. AVL树的定义 二、AVL树节点结构 三、AVL树的插入操作 1. 插入流程 2. 代码实现片段 四、AVL树的旋转调整 1. 左单旋(RR型) 2. 右单旋(LL型) 3. 左右双旋(LR型…...
打造专属AI好友:小智AI聊天机器人详解
打造专属AI好友:小智AI聊天机器人详解 在当下的科技热潮中,AI正迅速改变着我们的生活,成为了科技领域的新宠。而今,借助开源项目的力量,你可以亲手打造一个智能小助手——小智AI聊天机器人。它不仅是一个技术探索的窗…...

Webpack基本用法学习总结
Webpack 基本使用核心概念处理样式资源步骤: 处理图片资源修改图片输出文件目录 自动清空上次打包的内容EslintBabel处理HTML资源搭建开发服务器生产模式提取css文件为单独文件问题: Css压缩HTML压缩 小结1高级SourceMap开发模式生产模式 HMROneOfInclud…...

阿里云服务器数据库故障排查指南?
阿里云服务器数据库故障排查指南? 以下是针对阿里云服务器(如ECS自建数据库或阿里云RDS等托管数据库)的故障排查指南,涵盖常见问题的定位与解决方案: 一、数据库连接失败 检查网络连通性 ECS自建数据库 确认安全组规则放行数据库…...

数图闪耀2025深圳CCFA中国零售博览会:AI+零售数字化解决方案引发现场热潮
展会时间:2025年5月8日—10日 地点:深圳国际会展中心(宝安新馆) 【深圳讯】5月8日,亚洲规模最大的零售行业盛会——2025 CCFA中国零售博览会在深圳盛大开幕。本届展会汇聚全球25个国家和地区的900余家参展商ÿ…...
Vue2 中 el-dialog 封装组件属性不生效的深度解析(附 $attrs、inheritAttrs 原理)
Vue2 中 el-dialog 封装组件属性不生效的深度解析(附 $attrs、inheritAttrs 原理) 在使用 Vue2 和 Element UI 进行组件封装时,我们常会遇到父组件传入的属性不生效的情况,比如在封装的 el-dialog 组件中传入 width"100%&qu…...

LeetCode 1722. 执行交换操作后的最小汉明距离 题解
示例: 输入:source [1,2,3,4], target [2,1,4,5], allowedSwaps [[0,1],[2,3]] 输出:1 解释:source 可以按下述方式转换: - 交换下标 0 和 1 指向的元素:source [2,1,3,4] - 交换下标 2 和 3 指向的元…...

linux ptrace 图文详解(八) gdb跟踪被调试程序的子线程、子进程
目录 一、gdb跟踪被调试程序的fork、pthread_create操作 二、实现原理 三、代码实现 四、总结 (代码:linux 6.3.1,架构:arm64) One look is worth a thousand words. —— Tess Flanders 相关链接: …...

游戏:用python写梦幻西游脚本(谢苏)
《梦幻西游》是一款受欢迎的网络游戏,许多玩家希望通过脚本来增强游戏体验,比如自动打怪、自动治疗等。本文将为您展示一个用Python编写简单《梦幻西游》自动打怪脚本的方案。 需求分析 1.1 具体问题 在《梦幻西游》中,玩家需要频繁与怪物进行…...
MLX-Audio:高效音频合成的新时代利器
MLX-Audio:高效音频合成的新时代利器 现代社会的快节奏生活中,对语音技术的需求越来越高。无论是个性化语音助手,还是内容创作者所需的高效音频生成工具,语音技术都发挥着不可或缺的作用。今天,我们将介绍一个创新的开…...

Spring Boot 3.x集成SaToken使用swagger3+knife4j 4.X生成接口文档
说一说Spring Boot 3.X集成SaToken使用swagger3并使用第三方的knife4j踩过的坑,废话不多说直接上正题,SaToken的我就不贴了 第一步当然是要先导入相关的依赖,包括swagger和knife4j,如下 <dependency><groupId>com.gi…...

用Python监控金价并实现自动提醒!附完整源码
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】💻香港大宽带-4H4G 20M只要36/月👉 点此查看详情 在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价。但黄金价格实时波动频繁…...
软考-软件设计师中级备考 11、计算机网络
1、计算机网络的分类 按分布范围分类 局域网(LAN):覆盖范围通常在几百米到几千米以内,一般用于连接一个建筑物内或一个园区内的计算机设备,如学校的校园网、企业的办公楼网络等。其特点是传输速率高、延迟低、误码率低…...
【一】浏览器的copy as fetch和copy as bash的区别
浏览器的copy as fetch和copy as bash的区别 位置:devTools->network->请求列表右键 copy as fetch fetch("https://www.kuaishou.com/graphql", {"headers": {"accept": "*/*","accept-language": &qu…...

ChatTempMail - AI驱动的免费临时邮箱服务
在当今数字世界中,保护在线隐私的需求日益增长。ChatTempMail应运而生,作为一款融合人工智能技术的新一代临时邮箱服务,它不仅提供传统临时邮箱的基本功能,还通过AI技术大幅提升了用户体验。 核心功能与特性 1. AI驱动的智能邮件…...