uploadlabs经验总结

server/2025/3/5 8:10:31/

目录

一、基础上传漏洞(太过简单目前环境不可能存在)

1、抓包然后改后缀进行绕过

2、抓包然后改上传文件类型进行绕过

3、改后缀大小写绕过,以及收尾加空格,加::$DATA,加点等等

php5%E7%BB%95%E8%BF%87%E7%AD%89%EF%BC%89-toc" name="tableOfContents" style="margin-left:40px">4、黑名单不完整绕过,复习后缀绕过(通过.php5绕过等)

5、压缩包中通过将恶意文件放在子压缩包中绕过

二、中等风险(小型公司可能存在)

php%E7%89%88%E6%9C%AC%E4%BD%8E%E4%BA%8E5.3%E7%9A%84%EF%BC%89-toc" name="tableOfContents" style="margin-left:40px">1、%00截断(%00只能用于php版本低于5.3的)

php%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81-toc" name="tableOfContents" style="margin-left:40px">2.图片拼接php恶意代码

三、较高风险(现如今的环境部分存在)

1、二次渲染

2、条件竞争

4、数组绕过


一、基础上传漏洞(太过简单目前环境不可能存在)

1、抓包然后改后缀进行绕过

2、抓包然后改上传文件类型进行绕过

3、改后缀大小写绕过,以及收尾加空格,加::$DATA,加点等等

php5%E7%BB%95%E8%BF%87%E7%AD%89%EF%BC%89" name="4%E3%80%81%E9%BB%91%E5%90%8D%E5%8D%95%E4%B8%8D%E5%AE%8C%E6%95%B4%E7%BB%95%E8%BF%87%EF%BC%8C%E5%A4%8D%E4%B9%A0%E5%90%8E%E7%BC%80%E7%BB%95%E8%BF%87%EF%BC%88%E9%80%9A%E8%BF%87.php5%E7%BB%95%E8%BF%87%E7%AD%89%EF%BC%89" style="margin-left:0px; margin-right:0px">4、黑名单不完整绕过,复习后缀绕过(通过.php5绕过等)


5、压缩包中通过将恶意文件放在子压缩包中绕过

例如:

二、中等风险(小型公司可能存在)

php%E7%89%88%E6%9C%AC%E4%BD%8E%E4%BA%8E5.3%E7%9A%84%EF%BC%89" name="1%E3%80%81%2500%E6%88%AA%E6%96%AD%EF%BC%88%2500%E5%8F%AA%E8%83%BD%E7%94%A8%E4%BA%8Ephp%E7%89%88%E6%9C%AC%E4%BD%8E%E4%BA%8E5.3%E7%9A%84%EF%BC%89" style="margin-left:0px; margin-right:0px">1、%00截断(%00只能用于php版本低于5.3的)

php%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81" name="2.%E5%9B%BE%E7%89%87%E6%8B%BC%E6%8E%A5php%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81" style="margin-left:0px; margin-right:0px">2.图片拼接php恶意代码

可以直接用Notepad直接打开图片后面加一个php代码,但是需要16进制,要不然图片可能出错。

也可以cmd进行生成,命令语句:copy 14.jpg /b + 14.php /a webshell.jpg

三、较高风险(现如今的环境部分存在)

1、二次渲染

imagecreatefromjpeg()函数

二次渲染是由Gif文件或 URL 创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,上传图片马失败。

进行通关

按照原来的方法进行上传,我们可以发现还是可以上传的,但是配合包含漏洞却无法解析,这时我们把上传的图片复制下来用Notepad打开,发现我们原来写的php代码没有了,这就是二次渲染把我们里面的php代码删掉了。

我们把原图和他修改过的图片进行比较,看看哪个部分没有被修改。将php代码放到没有被更改的部分,配合包含漏洞,就可以了。

2、条件竞争

对条件竞争的考察,我们看代码他是先将图片上传上去,才开始进行判断后缀名、二次渲染。如果我们在上传上去的一瞬间访问这个文件,那他就不能对这个文件删除、二次渲染。这就相当于我们打开了一个文件,然后再去删除这个文件,就会提示这个文件在另一程序中打开无法删除。

操作:直接上传一个php文件,然后进行抓包,将数据包发送至intruder下

然后发包,用另一个浏览器一直访问18.php地址,只要在上传的一瞬间,他还没来的及删除、修改就可以了(一直访问)。

4、数组绕过

源代码:

php">php$is_upload = false;$msg = null;if(!empty($_FILES['upload_file'])){//检查MIME$allow_type = array('image/jpeg','image/png','image/gif');if(!in_array($_FILES['upload_file']['type'],$allow_type)){$msg = "禁止上传该类型文件!";}else{//检查文件名$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];if (!is_array($file)) {$file = explode('.', strtolower($file));}$ext = end($file);   //文件后缀$allow_suffix = array('jpg','png','gif');if (!in_array($ext, $allow_suffix)) {$msg = "禁止上传该后缀文件!";}else{$file_name = reset($file) . '.' . $file[count($file) - 1];$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' .$file_name;if (move_uploaded_file($temp_file, $img_path)) {$msg = "文件上传成功!";$is_upload = true;} else {$msg = "文件上传失败!";}}}}else{$msg = "请选择要上传的文件!";}

如果save_name为空,则把`$_FILES['upload_file']['name']`赋值给$file,反之`$_POST['save_name']`赋值给$file

如果$file不是数组,则将其处理为数组,通过`.`符号将其分割 [ “muma.php”,””,”jpg”]

通过`end()`函数获得$file中的最后一个元素,赋值给$ext,并进行后缀校验。感觉这里应该有名堂

后缀符合,则拼接文件名为`首元素.尾元素` `reset()`获取数组首元素

$file_name = reset($file) . '.' . $file[count($file) - 1];

count[2]-1=1,因为[1]我们没有设置就直接为空,前面为返回的file为test.php再拼接一个小数点,又因为windows会省略小数点,即可上传成功


http://www.ppmy.cn/server/172550.html

相关文章

【网络安全】——二进制协议 vs 文本协议:从原理到实战的深度解析

目录 引言 一、协议的本质与分类 二、二进制协议详解 1. 核心特点 2. 典型结构示例 3. 常见应用场景 4. 详细介绍 三、文本协议详解 1. 核心特点 2. 典型结构示例 3. 常见应用场景 4.详细介绍 四、关键对比:二进制协议 vs 文本协议 五、实战案例&…

05 HarmonyOS NEXT高效编程秘籍:Arkts函数调用与声明优化深度解析

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 目录 概述函数调用优化声明参数要和实际的参数一致反例正例 函数内部变量尽量使用参数传递反例正例 函数与类声明优化避免动态声明function与class…

费曼物理学讲义-对世界的认知以及方法

《费曼物理学讲义》(The Feynman Lectures on Physics)是理查德费曼(Richard Feynman)在加州理工学院为本科生讲授物理学的经典课程整理而成的著作。这套讲义以深刻的物理直觉、生动的语言和独特的视角著称,至今仍是物…

nginx 503错误分析

常见原因 后端服务宕机或未启动 • Nginx 作为反向代理时,若后端应用服务器(如 Tomcat、Node.js、PHP-FPM 等)未运行或崩溃,会导致 503。 • 排查方法:检查后端服务状态、日志及端口监听情况(如 netstat -t…

【江科协-STM32】1. GPIO

GPIO简介 GPIO(General Purpose Input/Output)通用输入输出口 可配置为8种输入输出模式。引脚电平0-3.3V,部分引脚可容忍5V,输出模式下可控制端口输出高低电平,用来驱动LED、控制蜂鸣器、模拟通信协议输出时序等。 输入模式下可读取端口的…

aiohttp、httpx 和 requests 的区别

先说结论,没有意外就用httpx,因为最牛的的openai接口用httpx,和FastAPI无缝兼容。 - httpx 是一个现代化的 HTTP 客户端,支持同步和异步操作 - 完全支持 async/await 语法 - API 设计更简洁,更接近 requests 的使用方…

2025 电商新航道:AI 多模态交互领航,元宇宙商品展示赋能

随着科技的飞速发展,电子商务行业正迈入一个全新的时代。2025年,AI多模态交互技术和元宇宙商品展示技术将成为电商领域的新航道,引领行业向更加智能化、沉浸化的方向发展。本文将深入探讨这两项技术的内涵、应用及其对电商行业未来的深远影响…

【大模型】DeepSeek-R1各版本模型推理显存需求测算【理论+实践】

前言 最近临危受命,调研了一下DeepSeek需要什么硬件配置才能本地部署。查询中文社区相关资料,发现不少帖存在夸大唬人嫌疑。 于是撰写本文,辅以实验验证,以正试听。 1. 数据精度 硬件配置的核心就是显卡的显存。实际部署应用中…