upload labs靶场
upload labs靶场
注意:本人关卡后面似乎相比正常的关卡少了一关,所以每次关卡名字都是+1才可以和正常关卡在同一关
一.个人信息
个人名称:张嘉玮
二.解题情况
三.解题过程
题目:up load labs靶场
pass 1前后端
思路及解题:先验证合法性是前端还是后端(如果是前端验证意味着你可以在前端验证之后后数据流发往后台的时候将其拦截并且修改)
题目中的提交限制必须为jpg等类型,需要判断这个提交是前端还是后端验证的,所以先打开抓包,并且发送一个不合法的php文件,提交,发现抓包并没有阻止页面显示文件上传格式错误,所以是前端验证。因此我直接将php文件类型重命名为jpg类型,提交文件前先抓包拦,再改变其中文件类型php为jpg,再forward,此时我已将木马发送到其内部,之后在下方图片中右键点击新标签页中打开图片,复制域名,打开蚁剑,右击添加数据,粘贴域名到url并且输入密码a,点击测试连接观察是否通过,若通过再添加,此时便可以控制对方了。
一句话木马
<?php
@eval($_POST_['a']);
?>
+++
pass 2前后端
1.思路:仍然是先看合法性是前端还是后端
我上传一个不合法的php文件并且用bp拦截,发现在拦截过程中页面未报错,所以是后端验证,不是前端,,之后判断拦截下的语句中哪句话是判断文件类型的,所以我继续先上传jpg,burp拦截后找到其中的Content-Type:image/jpeg然后删掉再forward,发现文件传输错误,所以它是通过content-type验证合法性的,之后我再上传一个php,拦截,将content-type:application/octet-stream改为image/jpeg之后forward则发送成功,蚁剑中添加数据后查看是否成功
+++
pass 3文件名加数字
(此题验证方式为黑名单,大部分网站是白名单)
思路及做法:查看源代码后发现其限制了php文件 但存在漏洞,未限制php3,4等格式;
所以直接将文件后缀名改为.php3等类型
+++
pass4配置文件
思路及做法:1.查看源码,发现其已限制大多数文件类型,但是有一个明显的漏洞,没有限制htacess文件,所以直接将文件后缀名改为.htacess就行了。
AddType application/x-httpd-php .jpg.txt意思就是将txt和.jpg文件当作php文件解析
2.所以接下来直接上传一个jpg文件类型的一句话木马就可以搞定了,再连接蚁剑测试是否成功.
+++
补充文件后缀名字
.htaccess
叫分布式配置文件 作用于网站根目录及其子目录 修改后立刻生效 可覆盖httod-conf
httpd -conf
(先加载)
包含apache http 作用于整个服务器 优先级低,需管理员权限 ,且重启服务器才可以生效
.user.ini
作用于用户或特定目录的配置文件,,可覆盖或追加配置选项,在web应用程序根目录下,可覆盖php.ini,追加全职配置文件
php.ini
(先加载)
作用是存储了对整个php环境生效的配置选项,通常位于php安装目录之下,优先级较低,需管理员权限和重启web服务器
+++
pass5配置文件
思路和做法:
仍然是有黑名单,限制了.htaccess,但是未限制.user.ini的,因为.user,.ini优先级程度高,可以覆盖掉php.ini,所以不限制的危害较大
Auto-prepend-file=index(2).txt //此文件中有木马//自动包含所有文件 用index(2).txt包含
所以先上传一个.user.ini的文件 再上传对应的php改为jpg后的文件 ,通过蚁剑连接,就可以
法二: 思路: 由于题目中检查文件名后缀的源代码并未选择循环结构,因此后缀名.php 后直接加**.空格.就可以在其检查后正好剩一个.php.正好运行(windows操作系统下会将最后一个点删除,使得文件仍然可以运行,所以蚁剑连接时直接输入.php**就可以了。
+++
pass6大写
思路:题目黑名单源代码中明显没有限制pHp,PHP等大写形式的后缀名,所以直接在bp中拦截之后更改Content后面的后缀名就可以了,之后蚁剑连接看有没有成功
+++
pass7空格
思路:题目黑名单源代码未限制首位去空,借此绕过黑名单(都需bp拦截后修改)。并且我windows系统下就算给文件后缀名加了点系统也会自动删除,所以可以正常运行。
+++
pass8 .
思路:题目黑名单源代码中少了del的自动删除.,**(删除方式是从右边往左边删,遇到空格就会停止)**因此直接bp更改Content下的文件后缀名就可以了,注意蚁剑搭建url时将最后的.删除,因为windows下会自动删除多余的点.
+++
补充额外数据流
格式: “”::$DATA" 即表示一个附加数据流 它不是一个文件 所以不会验证文件后缀.
作用:和例如打开txt文件后直接就可以看见的文字信息,也叫默认数据流不同,其可以存储文件的元数据,标签,备份等,想要访问需要特殊命令
导入方式:
-
echo 内容 >>文件名:数据流名
访问 Notepad 文件名:数据流名
-
type 文件名>>文件名.数据流名
+++
pass9::$DATA
思路:题目黑名单中缺少了对**:: D A T A ∗ ∗ 的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个 b u g 直接绕过,之后新建标签页打开后将 u r l 里的 : : DATA**的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个bug直接绕过,之后新建标签页打开后将url里的:: DATA∗∗的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个bug直接绕过,之后新建标签页打开后将url里的::DATA删除就可以访问了
+++
pass10. .
思路:删除点与空格的源代码中没有添加循环 ,所以直接**.空格 .**解决
+++
pass10双写后缀绕过
$file_name = str_ireplace($deny_ext,"", $file_name);
意思是deny—会将$file_name路径下的之前黑名单的文件全部变成’ ',也就是删除他们 顺序是从左边往右边删(没有循环的条件下只循环一下
+++
补充空字符
格式:0x00 顺序从左到右(在编程语言使用 || %00(在url中使用)
+++
pass11%00截断(php<5.3.29)
思路:观察源代码发现其用白名单过滤
$ext_arr = array('jpg','png','gif');
$file_ext = substr($_FILES['upload_file']['name'], strrpos($_FILES['upload_file']['name'],".")+1)
逗号前 是获取文件 也就是从哪里获取:逗号后 是在几位 ;(点在这个里面最后出现是出现在了第几位)(从左到右)
php上传先先把文件放在临时路径当中,再移动到指定位置
漏洞在于通过**GET[‘save_path’].来拼接组成上传的文件路径 而这个get传参是我们可以改掉的地方,改掉其上传路径,再将后面进行截断。其实原理就是在后端验证时它发现你是jpg文件,所以给你通过了,但是后续经过移动到临时路径和最终路径的过程中时,111.php和.jpg拼接,因为php后面有%00所以jpg会省略,最终还是以php形式解读的
操作:
改为
%00
是空字符(NULL字符)的URL编码,它在某些情况下可能被用于截断字符串或绕过安全措施
(后面的http1.1是个http协议)
+++
pass12
思路:大致和12关一样
将空格改成右边框中hex(16进制)形式---->00
+++
补充图片字符标识
- jpeg/jfif 头字节0xff 0xd8
- png(无损压缩形式) 0x89 0x50
- gif 0x47 0x47 0x49
- bmp(windows位图) 0x42 0x4d
- tuff(标签图片格式) 可是不同的d
+++
pass13修改前两个字节
思路及做法:
观察题目源代码,发现其有判断语句判断(读取文件的前两个字节)转化为10进制再判断.
switch($typeCode){ case 255216: $fileType = 'jpg'; //十进制break;case 13780: $fileType = 'png';break; case 7173: $fileType = 'gif';break;default: $fileType = 'unknown';} return $fileType;
代码通过读为图片头字母判断是什么图片类型
做法:先将一句话木马以jpg形式更改后缀名,再通过记事本形式打开将最前面增加两个空格,(以方便后续的修改),再通过010editor更改前面两个字头->89 50 (png)形式,之后将文件后缀名字改为php以原来的方式上传 发现不可以 因为文件以Png的形式解析了;所以需要将jpg文件以php形式输出,这个时候就需要文件包含漏洞了:上传一个改了文件头的php文件,观察他的路径 是在upload路径里面 而包含漏洞的文件夹在他的上级目录,所以在有漏洞页面的后面输入urll后**?file=./upload/7020241111194319**就成功了
漏洞:通过get请求获得file文件中的东西,它没有对文件包含的东西过滤,都会将文件以php形式解析
所以可以利用它会将文件当成php形式的漏洞直接输入?file=1.jpg(文件中是一句话木马)
+++
pass14图片马绕过
getimgaesize()意思是返回包含文件属性的数组,这里不可以通过13关一样简单的方法过了
做法:应用cmd,将一个图片与含有一句话代码的php文件(这两个文件必须放在一个路径)通过cmd(打开cmd后,通过基础命令进入他俩在的那个路径) 输入:copy 1.jpg/b + index(22).php/a 2.jpg生成一个图片马,之后就可以成功发送了,之后打开文件包含漏洞的页面 输入**?file=./upload/刚刚随机生成的文件编码**,就可以通过蚁剑连接了.
+++
pass15图片马绕过
仿照第14关就可以过去了
+++
pass16二次渲染
思路:通过观察源代码,发现它将图片进行了二次渲染,也就是重新超了一遍,会删掉一些东西,所以原来有的Php木马会直接消失掉,如下:
做法一:保存一个gif图片(),上传到题目中去,通过010editor打开并进行比较,其中蓝色部分是两者相同的部分,找到两者相同的地方(要稍微靠后一点),则我可以在原来的图片的一堆数字里增加一句话木马,这里的木马因为被掩盖掉了,所以木马不会被删除,上传成功之后,通过文件包含漏洞在url里输入?file=./upload/文件名,再通过蚁剑连接,然后就成功了.
做法二:在你第一次发送的gif图片里直接插入一句话木马,再发送给题目,发现木马其并没有被删掉,所以这就是他的漏洞,他渲染一次后就不会再渲染了,所以可以直接将渲染一次后的图片里直接插入一句话木马,就成功了
+++
补充条件竞争
文件上传会从临时目录(服务器)转移到指定目录,再判断文件是否合法,所以通过发送很多请求,使判断过程缓不过来,我再趁机访问
<?php fputs(fopen('../upload/shell18.php','w'),'<?php phpinfo();?>');?>
原理:访问有没有Php文件,如果没有就会新建一个shell.php文件 再将一句话木马写下去
+++
pass17
思路及做法:先抓一个上传php文件的包
同时在url中搜索 路径为在upload里的你要往过发的文件的路径,也拦截住,把这两个都发送都爆破模式,再按照上述设置同时爆破,只要看见upload路径下长存这那个shell18.php文件就成功了.(注意要一边访问一边攻击)
+++
pass18apache解析漏洞+条件竞争(php版本为apache版本才有的漏洞)
思路:在这里的源代码中会提前解析文件后缀名,所以就算爆破,其中的php文件也会被拦截,但是apache解析不了7z 它从右边往左边解析时候,遇到7z不会执行,会直接解析php index(22).php.7z,所以可以借助7z的后缀名字通过,下一步就和17关一样了.
+++
pass19后缀绕过总结
思路:观察源代码发现其会直接看.后面的后缀 然后判断
可以上传的时候 后缀名字为.php空格 .jpg就可以通过了,因为windows解析时候会自动将空格删除,所以不要害怕文件打不开,而题目过滤时却会读取到jpg,所以可以成功绕过。
+++
hp版本为apache版本才有的漏洞)
思路:在这里的源代码中会提前解析文件后缀名,所以就算爆破,其中的php文件也会被拦截,但是apache解析不了7z 它从右边往左边解析时候,遇到7z不会执行,会直接解析php index(22).php.7z,所以可以借助7z的后缀名字通过,下一步就和17关一样了.
+++
pass19后缀绕过总结
思路:观察源代码发现其会直接看.后面的后缀 然后判断
可以上传的时候 后缀名字为.php空格 .jpg就可以通过了,因为windows解析时候会自动将空格删除,所以不要害怕文件打不开,而题目过滤时却会读取到jpg,所以可以成功绕过。
+++
相关文章:

upload labs靶场
upload labs靶场 注意:本人关卡后面似乎相比正常的关卡少了一关,所以每次关卡名字都是1才可以和正常关卡在同一关 一.个人信息 个人名称:张嘉玮 二.解题情况 三.解题过程 题目:up load labs靶场 pass 1前后端 思路及解题:…...

搜索引擎友好:设计快速收录的网站架构
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/14.html 为了设计一个搜索引擎友好的网站架构,以实现快速收录,可以从以下几个方面入手: 一、清晰的目录结构与层级 合理划分内容:目录结构应…...

基于 oneM2M 标准的空气质量监测系统的互操作性
论文标题 英文标题: Interoperability of Air Quality Monitoring Systems through the oneM2M Standard 中文标题: 基于 oneM2M 标准的空气质量监测系统的互操作性 作者信息 Jonnar Danielle Diosana, Gabriel Angelo Limlingan, Danielle Bryan Sor…...

春晚舞台上的人形机器人:科技与文化的奇妙融合
文章目录 人形机器人Unitree H1的“硬核”实力传统文化与现代科技的创新融合网友热议与文化共鸣未来展望:科技与文化的更多可能结语 2025 年央视春晚的舞台,无疑是全球华人目光聚焦的焦点。就在这个盛大的舞台上,一场名为《秧BOT》的创意融合…...

零基础学习书生.浦语大模型-入门岛
第一关:Linux基础知识 Cursor连接服务器 使用Remote - SSH插件即可 注:46561:服务器端口号 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno …...
Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr
在新版本的 Gurobi 中,向 addConstr 这个方法中传入一个 TempConstr 对象,在模型中就会根据这个对象生成一个约束。更重要的是:TempConstr 对象可以传给所有addConstr系列方法,所以下面先介绍 TempConstr 对象 TempConstr TempC…...

数据结构---图的遍历
图的遍历(Travering Graph):从图的某一顶点出发,访遍图中的其余顶点,且每个顶点仅被访问一次,图的遍历算法是各种图的操作的基础。 复杂性:图的任意顶点可能和其余的顶点相邻接,可能在访问了某个顶点后,沿某条路径搜索…...

Qwen 模型自动构建知识图谱,生成病例 + 评价指标优化策略
关于数据库和检索方式的选择 AI Medical Consultant for Visual Question Answering (VQA) 系统:更适合在前端使用向量数据库(如FAISS)结合关系型数据库来实现图像和文本的检索与存储。因为在 VQA 场景中,你需要对患者上传的图像或…...

.Net Web API 访问权限限定
看到一个代码是这样的: c# webapi 上 [Route("api/admin/file-service"), AuthorizeAdmin] AuthorizeAdmin 的定义是这样的 public class AuthorizeAdminAttribute : AuthorizeAttribute {public AuthorizeAdminAttribute(){Roles "admin"…...

项目架构调整,切换版本并发布到中央仓库
文章目录 0.完成运维篇maven发布到中央仓库的部分1.配置server到settings.xml2.配置gpg 1.架构调整1.sunrays-dependencies(统一管理依赖和配置)1.作为单独的模块2.填写发布到中央仓库的配置1.基础属性2.基本配置3.插件配置 3.完整的pom.xml 2.sunrays-f…...

考试知识点位运算
深入理解位运算 在C编程的世界里,位运算作为一种直接对二进制位进行操作的运算方式,虽然不像加减乘除等算术运算那样广为人知,却在许多关键领域发挥着至关重要的作用。从底层系统开发到高效算法设计,位运算都展现出其独特的魅力与…...

matlab快速入门(2)-- 数据处理与可视化
MATLAB的数据处理 1. 数据导入与导出 (1) 从文件读取数据 Excel 文件:data readtable(data.xlsx); % 读取为表格(Table)CSV 文件:data readtable(data.csv); % 自动处理表头和分隔符文本文件:data load(data.t…...

Kafka中文文档
文章来源:https://kafka.cadn.net.cn 什么是事件流式处理? 事件流是人体中枢神经系统的数字等价物。它是 为“永远在线”的世界奠定技术基础,在这个世界里,企业越来越多地使用软件定义 和 automated,而软件的用户更…...

Python-列表
3.1 列表是什么 在Python中,列表是一种非常重要的数据结构,用于存储一系列有序的元素。列表中的每个元素都有一个索引,索引从0开始。列表可以包含任何类型的元素,包括其他列表。 # 创建一个列表my_list [1, 2, 3, four, 5.0]…...

51单片机开发:定时器中断
目标:利用定时器中断,每隔1s开启/熄灭LED1灯。 外部中断结构图如下图所示,要使用定时器中断T0,须开启TE0、ET0。: 系统中断号如下图所示:定时器0的中断号为1。 定时器0的工作方式1原理图如下图所示&#x…...

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
目录 1 -> HML语法 1.1 -> 页面结构 1.2 -> 数据绑定 1.3 -> 普通事件绑定 1.4 -> 冒泡事件绑定5 1.5 -> 捕获事件绑定5 1.6 -> 列表渲染 1.7 -> 条件渲染 1.8 -> 逻辑控制块 1.9 -> 模板引用 2 -> CSS语法 2.1 -> 尺寸单位 …...

算法【混合背包】
混合背包是指多种背包模型的组合与转化。 下面通过题目加深理解。 题目一 测试链接:1742 -- Coins 分析:这道题可以通过硬币的个数将其转化为01背包,完全背包和多重背包。如果硬币的个数是1个,则是01背包;如果硬币的…...

WordPress eventon-lite插件存在未授权信息泄露漏洞(CVE-2024-0235)
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

基于微信小程序的医院预约挂号系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

C++初阶 -- 手撕string类(模拟实现string类)
目录 一、string类的成员变量 二、构造函数 2.1 无参版本 2.2 有参版本 2.3 缺省值版本 三、析构函数 四、拷贝构造函数 五、c_str函数 六、operator重载 七、size函数 八、迭代器iterator 8.1 正常版本 8.2 const版本 九、operator[] 9.1 正常版本 9.2 const版…...

【Postman接口测试】Postman的安装和使用
在软件测试领域,接口测试是保障软件质量的关键环节之一,而Postman作为一款功能强大且广受欢迎的接口测试工具,能够帮助测试人员高效地进行接口测试工作。本文将详细介绍Postman的安装和使用方法,让你快速上手这款工具。 一、Pos…...

miniconda学习笔记
文章主要内容:演示miniconda切换不同python环境,安装python库,使用pycharm配置不同的conda建的python环境 目录 一、miniconda 1. 是什么? 2.安装miniconda 3.基本操作 一、miniconda 1. 是什么? miniconda是一个anac…...

区块链项目孵化与包装设计:从概念到市场的全流程指南
区块链技术的快速发展催生了大量创新项目,但如何将一个区块链项目从概念孵化成市场认可的产品,是许多团队面临的挑战。本文将从孵化策略、包装设计和市场落地三个维度,为你解析区块链项目成功的关键步骤。 一、区块链项目孵化的核心要素 明确…...

JavaScript的基本组成
1、JavaScript的组成部分 JavaScript可以分为三个部分:ECMAScript标准、DOM、BOM。 ECMAScript标准 即JS的基本语法,JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标 准,定义了一种语言…...

[Linux]从零开始的STM32MP157 U-Boot移植
一、前言 在上一次教程中,我们了解了STM32MP157的启动流程与安全启动机制。我们还将FSBL的相关代码移植成功了。大家还记得FSBL的下一个步骤是什么吗?没错,就是SSBL,而且常见的我们将SSBL作为存放U-Boot的地方。所以本次教程&…...

【Unity3D】实现横版2D游戏——攀爬绳索(简易版)
目录 GeneRope.cs 场景绳索生成类 HeroColliderController.cs 控制角色与单向平台是否忽略碰撞 HeroClampController.cs 控制角色攀爬 OnTriggerEnter2D方法 OnTriggerStay2D方法 OnTriggerExit2D方法 Update方法 开始攀爬 结束攀爬 Sensor_HeroKnight.cs 角色触发器…...

【llm对话系统】大模型 Llama 源码分析之 LoRA 微调
1. 引言 微调 (Fine-tuning) 是将预训练大模型 (LLM) 应用于下游任务的常用方法。然而,直接微调大模型的所有参数通常需要大量的计算资源和内存。LoRA (Low-Rank Adaptation) 是一种高效的微调方法,它通过引入少量可训练参数,固定预训练模型…...

算法随笔_35: 每日温度
上一篇:算法随笔_34: 最后一个单词的长度-CSDN博客 题目描述如下: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升…...

嵌入式硬件篇---CPUGPUTPU
文章目录 第一部分:处理器CPU(中央处理器)1.通用性2.核心数3.缓存4.指令集5.功耗和发热 GPU(图形处理器)1.并行处理2.核心数量3.内存带宽4.专门的应用 TPU(张量处理单元)1.为深度学习定制2.低精…...

STM32 PWM驱动舵机
接线图: 这里将信号线连接到了开发板的PA1上 代码配置: 这里的PWM配置与呼吸灯一样,呼吸灯连接的是PA0引脚,输出比较单元用的是OC1通道,这里只需改为OC2通道即可。 完整代码: #include "servo.h&quo…...