upload-labs 靶场(11~21)

免责声明

本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。

作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。

在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。

本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。

作者保留对本博客文章的所有权利,并有权在未经通知的情况下进行修改或删除。

正文部分

前期准备:

        目标:学习文件上传漏洞的绕过

        系统环境:

                攻击机:Windows 10

                靶机:192.168.162.22(Windows 10 ==> phpStudy 2018)

        工具:

                Google浏览器、BurpSuite、Behinder、蚁剑

Pass-11

从源码可以看出,这一关会过滤掉黑名单中的文件后缀,那么关键字嵌入一下是不是就过了?

放包

没问题,冰蝎连🐎

Pass-12

看源码,貌似是可以使用文件名截断的方法,前提是需要把 PHP 版本改一下

抓包改数据,在路径后面加上文件名,用 %00 截断

放包

虽然文件名后面还有一大堆东西,不过无伤大雅,只访问🐎文件名就行了,召唤冰蝎连🐎,连接之前先将 PHP 的版本调回 5.4.45

Pass-13

看源码,这关好像跟上一关差不多,先把 PHP 版本改一下,跟上一关一样,抓个包

文件名后面依旧是 %00,只不过这里需要手段解一下码,快捷键是 Ctrl + Shift + U,具体操作还是看我另一篇文章吧,这里不太想截图了 ==> iwebsec 靶场——06-文件截断上传

改回 PHP 版本,冰蝎连🐎

Pass-14

看源码,看情况是要写图片🐎,然后用文件包含漏洞执行🐎,包含文件点击链接了解

制作图片🐎方法就不说了,没什么难的。这一关就上传一个 jpg 格式的文件吧,召唤冰蝎连🐎

Pass-15

看源码,跟上一关一样,这关上传 png 格式的文件

Pass-16

看源码,还是一样的操作,这关上传 gif 格式的文件

可爱吧,哈哈哈哈哈哈

Pass-17

看源码,这关要对图片进行二次渲染,也就是说服务器把刚才上传的文件稍做了修改,那么我们就要在被服务器已经改改掉的图片中插入🐎,把服务器返回的图片保存下来进行对比,用工具改一下,将🐎写进去

将匹配的地方改成🐎,然后再次上传,这关换作蚁剑连接

Pass-18

先代码审计,发现这个逻辑问题还是有很大的问题。先接收上传的文件,然后判断保留还是删除

由于代码的执行需要时间,那么就利用代码执行的时间差访问上传的文件,使文件做一些事,比如创建一个🐎,思路整合完成,开始操作

首先,先写一个子母🐎

zmm.php 文件是要上传的文件,文件中的 shell.php 是要生成的文件,里面的内容就是后面那一段 php 代码。由于文件上传上去后存留的时间太短,根本来不及访问 zmm.php 文件,那么就需要不断地发,然后不断地访问 zmm.php 文件,使其执行生成🐎。这个时候就要用到 bp 协助上传和访问

上传一个文件做测试,看看文件会被上传到哪个目录中

接下来先提前开一个网页访问 zmm.php 文件,然后上传 zmm.php,用 bp 抓包,具体操作就到另一篇文章看 ==> iwesec 靶场——07-竞争条件文件上传

完事后召唤蚁剑连接🐎

Pass-19

这一关有两种方式,也都是前面操作过的

方法 1 => 上传图片🐎文件包含

将子母🐎插入到图片中,然后文件包含,生成子🐎

我这里的路径有点问题,不过无伤大雅

方法 2 => bp 无限访问文件包含

这个方法是用 bp 无限上传文件,趁着文件名还没有被换掉,然后包含到子母🐎生成子🐎

这个是上传子母🐎的数据包

这个是访问包含子母🐎的数据包

接下来就开始无限上传了

子🐎生成成功,用蚁剑连接一下

Pass-20

这一关思路就比较多了,毕竟上面都多了那么多关卡了

思路 1 => 文件截断上传

这一关要改一下 PHP 版本

将文件的保存名称后面截断,放包看看效果

恢复 PHP 版本,然后……有请冰蝎连🐎

思路 2 => 文件包含

上传一个图片🐎,然后文件包含解析 PHP,最后用蚁剑连🐎

思路 3 => 大小写绕过

冰蝎连接🐎

Pass-21

看源码,发现这关还是挺复杂的,不过有两行核心代码,搞定核心就相当于搞定了控制权

代码中使用 explode('.', strtolower($file)) 来获取文件后缀,但没有处理文件名中包含多个点的情况。例如,上传一个名为 file.php.jpg 的文件,后缀会被错误地识别为 jpg

reset($file) . '.' . $file[count($file) - 1] 这种方式重命名文件名并不安全,可能会导致文件名冲突或路径遍历漏洞

所以在数据包中修改内容

由于explode() 函数会将文件名按照点拆分为一个数组,那么在修改后数据包中,第一个数组元素就是文件名,第三个就是后缀,第二个就放空,也没限制后缀不能是空

放包

冰蝎连🐎

收工

17、18、19 关要生成子🐎,冰蝎🐎不知道怎么回事老报错,就用蚁剑连接了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/479628.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式硬件实战基础篇(四)多路直流稳压电源

设计一个多路直流稳压电源 要求设计制作一个多路输出直流稳压电源,可将220 V / 5 0HZ交流电转换为5路直流稳压输出。具体要求: 输出直流电压 12V, 5V;和一路输出3- 15V连续可调直流稳压电源: 输出电流Iom500mA; 稳压系数 Sr≤0.05;

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代,自然语言处理(NLP)领域涌现出许多强大的模型,其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论,也在工业界得到了广泛应用。那么,G…

【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函数

引言 自动检测图像中的圆形或圆形对象,并可视化检测到的圆形。 函数详解 imfindcircles imfindcircles是MATLAB中的一个函数,用于在图像中检测并找出圆形区域。 基本语法: [centers, radii] imfindcircles(A, radiusRange) [centers, r…

17. C++模板(template)1(泛型编程,函数模板,类模板)

⭐本篇重点:泛型编程,函数模板,类模板 ⭐本篇代码:c学习/07.函数模板 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. 泛型编程 二. 函数模板 2.1 函数模板的格式 2.2 函数模板的简单使用 2.3 函数模板…

学习threejs,设置envMap环境贴图创建反光效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.CubeTextureLoader 立…

v-for产生 You may have an infinite update loop in a component render function

参考文章&#xff1a; 报错解析 [Vue warn]: You may have an infinite update loop in a component render function. 另外一个解决方法 例如: MyList 是一个数组&#xff0c;我希望将排序后的结果返回进行for循环&#xff0c;因此设计了一个myMethon函数 <div v-for"…

spring boot框架漏洞复现

spring - java开源框架有五种 Spring MVC、SpringBoot、SpringFramework、SpringSecurity、SpringCloud spring boot版本 版本1: 直接就在根下 / 版本2:根下的必须目录 /actuator/ 端口:9093 spring boot搭建 1:直接下载源码打包 2:运行编译好的jar包:actuator-testb…

【Linux】线程的互斥和同步

【Linux】线程的互斥和同步 线程间的互斥 临界资源&#xff1a;多线程执行共享的资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#…

集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解

1、 Queue与Deque的区别 在研究java集合源码的时候&#xff0c;发现了一个很少用但是很有趣的点&#xff1a;Queue以及Deque&#xff1b; 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用&#xff0c;但是一直都不知道Queue的作用&#xff0c;于是就直接官方…

亮相全国集群智能与协同控制大会,卓翼飞思无人智能科研方案成焦点

无人集群智能协同技术是人工智能发展的必然趋势&#xff0c;也是我国新一代人工智能的核心研究领域。为加强集群智能与协同控制需求牵引和对接、技术交流和互动&#xff0c;11月23-25日&#xff0c;由中国指挥与控制学会主办的第八届全国集群智能与协同控制大会在贵阳市隆重召开…

Oracle JDK(通常简称为 JDK)和 OpenJDK区别

Java 的开发和运行时环境主要由两种实现主导&#xff1a;Oracle JDK&#xff08;通常简称为 JDK&#xff09;和 OpenJDK。尽管它们都基于同一个代码库&#xff0c;但在一些关键点上有所区别。以下是详细的对比&#xff1a; 1. 基础代码 Oracle JDK&#xff1a; 基于 OpenJD…

损失函数分类

1. NLLLoss&#xff08;负对数似然损失&#xff09; 定义&#xff1a; 直接对预测的概率 p(yi) 的负对数求平均。通常配合 Softmax 使用&#xff0c;输入为对数概率。 优点&#xff1a; 对离散分类问题效果良好。更灵活&#xff0c;用户可以自行计算 Softmax。 缺点&#x…

vue3 数字滚动插件vue3-count-to

安装 npm i vue3-count-to -S 引入 import { CountTo } from vue3-count-to 使用 <countTo :startVal"0" :endVal"57.63" :decimals"0" :duration"3000"></countTo> 所有配置

CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes!)(前五道)

A. Shohag Loves Mod 翻译&#xff1a; Shohag 有一个整数 n。请帮他找出一个递增整数序列 &#xff0c;使得 在所有 的对上都满足。 可以证明&#xff0c;在给定的约束条件下&#xff0c;这样的序列总是存在的。 思路&#xff1a; 每个数为下标i*2-1&#xff08;注意这里下…

数据结构之二:表

顺序表代码&#xff1a;SData/SqList/SeqList.h Hera_Yc/bit_C_学习 - 码云 - 开源中国 链表相关代码&#xff1a;SData/ListLink/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 leetcode相关代码leetcode/reverse_Link/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 本文…

Adaboost集成学习 | Python实现基于NuSVR-Adaboost多输入单输出回归预测

目录 效果一览基本介绍程序设计参考资料效果一览 基本介绍 基于NuSVR-Adaboost多输入单输出回归预测python代码 NuSVR是一种支持向量回归(SVR)算法的变体,用于解决回归问题。SVR是一种监督学习方法,它用于预测连续目标变量,而不是分类标签。NuSVR在SVR的基础上引入了一个…

Vue.js --- 生命周期

1. 前言 在 Vue.js 中&#xff0c;生命周期是指一个 Vue 实例从创建到销毁的过程。Vue 提供了一系列的生命周期钩子&#xff08;lifecycle hooks&#xff09;&#xff0c;让开发者可以在不同的阶段执行特定的代码。了解这些生命周期钩子是构建 Vue 组件的基础&#xff0c;能够…

排序算法之选择排序篇

思想&#xff1a; 每次从未排序的部分找出最小的元素&#xff0c;将其放到已排序部分的末尾 从数据结构中找到最小值&#xff0c;放到第一位&#xff0c;放到最前面&#xff0c;之后再从剩下的元素中找出第二小的值放到第二位&#xff0c;以此类推。 实现思路&#xff1a; 遍…

hive的cascade使用解释

最近看到涉及到hive表字段新增&#xff0c;项目组其他人员让我add columns后加 cascade&#xff0c;这个我以前见到过&#xff0c;但是我一般没有用&#xff0c;也没出问题&#xff0c;那就研究下。 网上大多数的说法就是分区表加字段需要级联&#xff0c;原因是&#xff0c;你…

聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透

一、触发器(Trigger) Trigger 决定了一个窗口&#xff08;由 window assigner 定义&#xff09;何时可以被 window function 处理。 每个 WindowAssigner 都有一个默认的 Trigger。 如果默认 trigger 无法满足你的需要&#xff0c;你可以在 trigger(…) 调用中指定自定义的 tr…