UPLOAD-LABS靶场[超详细通关教程,通关攻略]
----------------------------------------
靶场环境:
下载链接:
https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master
使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问
----------------------------------------
靶场简介:
Upload-labs是一个使用PHP语言编写,专门用于渗透测试和CTF中遇到的各种文件上传漏洞的靶场。目前一共20关,每个关都包含着不同上传方式。
文件上传漏洞:用户可以越过其本身权限,向服务器上传可执行的动态脚本文件,例如木马、病毒、恶意脚本或者WebShell等。文件上传漏洞本身就是一个危害巨大的漏洞,WebShell更是将这种漏洞的利用无限扩大。
----------------------------------------
目录
靶场环境:
靶场简介:
less1:
less2:
less3:
less4:
less5:
less6:
less7:
less8:
less9:
less10:
less11:
less12:
less13:
less14:
less15:
less16:
less17:
less18:
less19:
----------------------------------------
less1:
上传我们的php一句话木马文件
发现不允许我们上传此类型的文件,我们尝试burp抓包试试
发现抓不到数据包,查看下源代码,发现我们可以修改我们的php文件为jpg格式再试试
发现可以提交,我们在抓一下jpg的包
发现可以抓到,然后在将后缀改回php格式然后放包试试看
上传成功,右击图片新窗口打开得出php一句话木马文件内容
----------------------------------------
less2:
上传我们的php一句话木马文件:
提示我们文件类型不正确,所以我们继续改为jpg格式开启抓包
修改格式为image/jpeg 后缀为php
上传成功,右击图片打开新窗口打开得出php一句话木马文件内容
----------------------------------------
less3:
上传我们的php一句话木马文件
发现不允许我们上传以下格式文件所以我把php文件改为php3/php5 进行绕过
上传成功,右击图片新建窗口打开得到我们的php一句话木马文件内容
----------------------------------------
less4:
查看源码我们发现可以看到,这关的黑名单过滤的是相当的多,基本将我们的后缀都过滤掉了这时候该怎么进行绕过呢
这时候补充一个知识点: .htaccess文件解析漏洞,.htaccess参数常见配法有以下几种:
AddHandler php5-script .jpgAddType application/x-httpd-php .jpgSethandler application/x-httpd-php
Sethandler
将该目录及子目录的所有文件均映射为php文件类型。Addhandler
使用 php5-script 处理器来解析所匹配到的文件。AddType
将特定扩展名文件映射为php文件类型。
简单来说就是,可以将我们所的文件都解析成php或者是特定的文件解析为php
那么我们创建一个.htaccess文件写上内容进行上传
AddType application/x-httpd-php .jpg
上传成功
那么我们再将我们的一句话木马上传,当然在这我们将文件后缀改为jpg格式,反正我们上传后的文件都会被解析为php,而且jpg也不会被过滤掉
右击图片新建窗口查看得到我们的php一句话木马文件内容
----------------------------------------
less5:
查看源码发现少了大小写.
那我们就将我们的文件后缀改为Php试试看
上传成功,右键图片查看得到php一句话木马文件内容
----------------------------------------
less6:
查看源代码发现少了首尾去空
因为windows的系统是自动去除空格的,所以我们开启抓包
在php后面加上空格然后放包然后上传成功
右击图片新建窗口查看得到php一句话木马文件内容
----------------------------------------
less7:
查看源代码发现少了删除文件名末尾的点
所以我们上传文件然后开启抓包
在php文件末尾加上点
放包发现上传成功
右击图片新建窗口发现得到php一句话木马文件内容
----------------------------------------
less8:
查看源代码发现少了去除字符串::$DATA
上传我们的文件,开启抓包
在php文件末尾加上::$DATA
然后放包,发现上传成功
右击图片新窗口查看得到php一句话木马文件内容
----------------------------------------
less9:
查看源码发现有删除文件名末尾的点和首尾去空
所以我们开启抓包
在文件末尾加上点 空格 点 因为末尾的点会被去除,php后面的点会被windows默认为空
放包,发现上传成功
右击图片新建窗口打开得到php一句话木马文件内容
----------------------------------------
less10:
查看源代码发现定义了好多黑名单
所以我们先正常上传一个php文件
发现上传成功右击图片看看
发现php文件后缀没了 所以我们开启抓包
在php里面在嵌套一个php进行绕过
放包查看
上传成功,右击图片新建窗口查看得到php一句话木马文件内容
----------------------------------------
less11:
这一关需要用%00截断,发现环境有问题,不显示结果,所以我们借助一下ctfhub里面的文件上传漏洞;来解这道题
打开ctfhub打开环境
ctfhub.com/
访问环境页面
我们开启抓包试试
发现指定了文件保存地址,那我们给他一个1.php,在使用%00将他截断
放包后上传成功
访问upload/2.php得到一句话木马文件内容
在使用系统命令查找文件发现flag文件
cat查看右键查看源代码发现flag
----------------------------------------
less12:
查看源代码,和第十一关对比,发现接受值变成了post,那么思路就和第十一关一样,不过post方式不会自行解码,所以要对%00进行urldecode编码
编码后放包上传成功
右击图片新建窗口查看得到php一句话木马文件内容
----------------------------------------
less13:
题目说让我们上传图片马我们访问一下(图片马自行获得)
右键新建窗口查看
只能查看图片,所以我们要配合文件包含漏洞去解
变量file就是我们要给的值所以我们访问图片地址
以post传输数据参数为pass执行看看
----------------------------------------
less14:
14关15关都和13关一样 上传我们的图片马
右键新建窗口打开
访问我们的文件包含 包含上传的图片信息
以post传输数据参数为pass执行看看
----------------------------------------
less15:
按照上面步骤即可
----------------------------------------
less16:
上传发现不行了,上传不了了
因为我们的图片有一句话木马,这关他会把我们的文件顺序打乱在重新组合成一张图片然后在返回回来 这里我们使用二次渲染
发现上传成功右键查看地址访问文件包含
执行成功 我们访问文件试试
访问成功,我们连接一句话木马使用中国菜刀app
添加查看信息
----------------------------------------
less17:
我们查看源码看到一个时间
发现是判断我们的文件符不符合要求而需要时间
所以我们去找一个php代码进行条件竞争
上传我们创建的2.php
发现不行尝试抓包
发送到intruder
无限上传:这时候我们去upload里面去访问它
来到浏览器一直刷新访问直到创建成功123.php
创建好123.php之后访问即可
----------------------------------------
less18:
题目为上传一个图片马 尝试上传图片马来看看
可以上传成功 来看看文件包含
可以访问试试访问文件信息
----------------------------------------
less19:
尝试上传文件看看
发现都不行
试试在文件后面加入一个点呢
上传成功右键新建窗口查看图片得到php一句话木马文件内容
----------------------------------------
文件上传本身是一个正常的业务需求,对于网站来说,很多时候也确实需要用户将文件上传到服务器,比如:上传图片,资料。
文件上传漏洞不仅涉及上传漏洞这个行为,还涉及文件上传后的进一步解析和处理,以及文件的下载,如果服务器的处理逻辑设计的不够全面,就会导致严重的后果
最简单的文件上传漏洞是指用户上传了一个可执行的脚本文件,并且根据此脚本获得了执行服务器命令的能力。
相关文章:

UPLOAD-LABS靶场[超详细通关教程,通关攻略]
---------------------------------------- 靶场环境: 下载链接: https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master 使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问 ------------------------------------…...

测试面试宝典(三十七)—— 接口测试中的加密参数如何处理?
1)先了解接口使用的加密方式(md5、rsa...) 2)检查接口测试工具是否支持这种加密方式,如果支持的话,直接使用对应功能就行了(比如Jmeter支持md5);如果加密方式是公司内部特有的算法,可以在接口测试工具中调…...

秋招突击——7/23——百度提前批面试准备和正式面试
文章目录 引言一面准备面试预演一1、讲一下hashcode()和equals()关系2、equals()和有什么区别3、讲一下重载和重写的区别4、讲一下深拷贝、浅拷贝的区别5、讲一下Java异常的基类,运行时异常举几个例子,什么情况下会出现?6、讲一下Java中线程的…...

学习日记:数据类型2
目录 1.转义字符 2.隐式类型转换 2.1 强制类型转换 2.2 不同类型间赋值 3.运算符 表达式 3.1 算术运算符 3.2 算术运算优先级 3.3 赋值运算 3.3.1 不同类型间混合赋值 3.4 逗号运算 4.生成随机数 5. 每日一练 1.转义字符 \n 表示换行 \t …...

Django Web框架——05
文章目录 admin 后台数据库管理注册自定义模型类修改自定义模型类的展现样式模型管理器类再谈Meta类 数据表关联关系映射一对一映射一对多映射多对多映射 cookies 和 sessioncookiessessionCookies vs session admin 后台数据库管理 django 提供了比较完善的后台管理数据库的接…...

【React】项目的目录结构全面指南
文章目录 一、React 项目的基本目录结构1. node_modules2. public3. src4. App.js5. index.js6. .gitignore7. package.json8. README.md 二、React 项目的高级目录结构1. api2. hooks3. pages4. redux5. utils 三、最佳实践 在开发一个 React 项目时,良好的目录结构…...

Django学习(二)
get请求 练习: views.py def test_method(request):if request.method GET:print(request.GET)# 如果链接中没有参数a会报错print(request.GET[a])# 使用这个方法,当查询不到参数时,不会报错而是返回你设置的值print(request.GET.get(c,n…...

Java引用类型
强软弱虚 以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的 SoftReference 到底在什么时候被回收 ? 如何量化内存不足 ? PhantomReference 和 WeakReference 究竟有何不同 ThreadLocal 和 Netty ByteBuf中使用到的引用类型 https://w…...

ubunto安装redis
更新包管理工具 sudo apt update 安装Redis sudo apt install redis-server Redis已经安装并且服务已启动 sudo systemctl status redis-server Redis开机启动项 sudo systemctl enable redis-server 可以编辑配置文件 /etc/redis/redis.conf,然后重启Redis服务 比如…...

【odoo17 | Owl】前端js钩子调用列表选择视图
概要 在我们选择多对一或者多对多字段的时候,经常看到可以弹出列表弹窗让人一目了然的效果,效果如下: 那么,这种效果是odoo本身封装好的组件,我们在平时的前端界面开发的时候,既不是后端视图的情况下&#…...

MATLAB基础:函数与函数控制语句
今天我们继续学习Matlab中函数相关知识。 API的查询和调用 help 命令是最基本的查询方法,可查询所有目录、指定目录、命令、函数。 我们直接点击帮助菜单即可查询所需的API函数。 lookfor 关键字用于搜索相关的命令和函数。 如,我们输入lookfor inpu…...

2024.7.30 搜索插入位置(二分法)
题解 二分法 left和right标记二分区间 ans标记n,因为存在大于所有数的可能。 var searchInsert function(nums, target) {const n nums.length;let left 0, right n - 1, ans n;while (left < right) {//计算中位数let mid ((right - left) >> 1)…...

Socket通信(C++)
文章目录 什么是SocketSocket通信过程C Socket通信APIint socket(int domain, int type, int protocol);int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);struct sockaddrstruct sockaddr_unstruct sockaddr_in / struct sockaddr_in6 int connect(int …...

小白学大模型:LLaMA-Factory 介绍与使用
最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…...

java算法day26
java算法day26 207 课程表208 实现Trie(前缀树) 207 课程表 这题对应的知识是图论里的拓扑排序的知识。从题意就可以感受出来了。题目说如果要学习某课程,那么就需要先完成某课程。 这里我描述比较复杂的情况:课程与课程之间也有可能是多对一的场景或者…...

docker笔记7-dockerfile
docker笔记7-dockerfile 一、dockerfile介绍二、dockerfile指令三、构建自己的镜像 一、dockerfile介绍 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 以下是常用的 Dockerfile 关键字的完整列表和说明: 二、docker…...

Spring-cloud Alibaba组件--Dubbo
远程调用技术 RestFul风格 基于HTTP协议实现,而HTTP是一种网络传输协议,基于TCP,规定了数据传输的格式。 RPC协议 Remote Produce Call 远程过程调用,类似的还有 RMI ( remote method invoke)。自定义数…...

右值引用--C++11
左值引用和右值引用 传统的C语法中就有引用的语法,而C11中新增了的右值引用语法特性,所以从现在开始我们 之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对象取别名。 什么是左值?什么是左值引用?…...

这样做外贸报价表,客户看了才想下单
报价,是外贸业务中最重要的一步,作为外贸人,不会做报价表可不行。有人说,直接在邮件里回复价格不就好了?是的,产品简单的可以这么做,但你也不能忽视报价表的价值,一份完美的价格表对…...

Swift学习入门,新手小白看过来
😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…...

【Ant Design Pro】快速上手
初始化 初始化脚手架:快速开始 官方默认使用 umi4,这里文档还没有及时更新(不能像文档一样选择 umi 的版本),之后我选择 simple。 然后安装依赖。 在 package.json 中: "start": "cross-e…...

Hive3:Hive初体验
1、创建表 CREATE TABLE test(id INT, name STRING, gender STRING);2、新增数据 INSERT INTO test VALUES(1, 王力红, 男); INSERT INTO test VALUES(2, 钉钉盯, 女); INSERT INTO test VALUES(3, 咔咔咔, 女);3、查询数据 简单查询 select * from test;带聚合函数的查询 …...

blender顶点乱飞的问题解决
初学blender,编辑模式下移动某些顶点,不管是移动还是滑动都会出现定点乱飞的问题,后来才发现是开了吸附工具的原因!!!! 像下面这样,其实我只是在Z轴上移动,但是就跑的很…...

Elasticsearch(ES) 集群脑裂
脑裂问题(split-brain problem)是指一个分布式系统中,当网络分裂(network partition)发生时,导致系统内部的两个或多个节点相互独立地认为自己仍然与其他节点连接,每个节点组都试图执行操作,这可能会导致数…...

spark 3.0.0源码环境搭建
环境 Spark版本:3.0.0 java版本:1.8 scala版本:2.12.19 Maven版本:3.8.1 编译spark 将spark-3.0.0的源码导入到idea中 执行mvn clean package -Phive -Phive-thriftserver -Pyarn -DskipTests 执行sparksql示例类SparkSQLExam…...

3.3、matlab彩色图和灰度图的二值化算法汇总
1、彩色图和灰度图的二值化算法汇总原理及流程 彩色图和灰度图的二值化算法的原理都是将图像中的像素值转化为二值(0或1),以便对图像进行简化或者特定的图像处理操作。下面分别介绍彩色图和灰度图的二值化算法的原理及流程: 1)彩色图的二值化算法原理及流程 (1)原理:…...

新手必看:Elasticsearch 入门全指南
Elasticsearch 入门介绍 Elasticsearch 是一个开源的分布式搜索和分析引擎,广泛应用于处理大规模数据和实时搜索需求。它基于 Apache Lucene 构建,具备高可扩展性和分布式特性,能够快速、可靠地存储、搜索和分析大量数据。本文将介绍 Elasti…...

【Linux】TCP全解析:构建可靠的网络通信桥梁
文章目录 前言1. TCP 协议概述2. TCP报头结构3. 如何理解封装和解包呢?4. TCP的可靠性机制4.1 TCP的确认应答机制4.2 超时重传机制 5. TCP链接管理机制5.1 经典面试题:为什么建立连接是三次握手?5.2 经典面试题:为什么要进行四次挥…...

图像处理 -- ISP中的3DNR与2DNR区别及实现原理
ISP中的3DNR与2DNR区别及实现原理 2DNR(2D Noise Reduction) 2DNR的原理: 2DNR主要针对单帧图像进行降噪处理。它利用空间域内的像素值,采用空间滤波的方法来减少噪声。常用的方法包括均值滤波、中值滤波和高斯滤波等。这些方法…...

硬盘分区读不出来的解决之道:从自救到专业恢复
在日常的计算机使用过程中,硬盘分区读不出来的问题常常令人头疼不已。这一问题不仅阻碍了用户对数据的正常访问,还可能预示着数据安全的潜在威胁。硬盘分区读不出来,通常是由于分区表损坏、文件系统错误、物理扇区损坏、驱动程序冲突或硬件连…...