upload-labs笔记

简介

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。

文件上传漏洞是指:

       Web 服务器允许用户将文件上传至其文件系统,但这些文件可能并没有经过充分的验证,如文件名称、类型、内容或大小等。未能正确执行这些限制就意味着即使最基本的图像上传功能也可能用于上传任意具有潜在危险的文件,里面甚至包括远程代码执行的服务器端脚本文件。

上传文件的条件:

1.文件可以上传

2.知道上传文件路径

准备安装好以下工具:

upload-labs靶场

phpstudy2016

火狐浏览器

Burp Suite :抓包工具

蚁剑或菜刀 :webshell连接工具

pass-1

方法一:浏览器禁用JS

谷歌:F12--设置里找到此选项选择禁用

火狐:F12--设置里找到此选项选择禁用

然后直接上传 .php文件,然后使用蚁剑或菜刀连接

方法二:使用burp抓包修改文件后缀上传

修改后,连击Forward,上传成功使用蚁剑或菜刀连接

pass-2

方法一:使用burp抓包修改Content-Type,Content-Type的值改为image/png

方法二:使用burp抓包修改后缀

上传 .png文件

 抓包修改后缀,点击发送,上传成功

pass-3

上传 .php文件,提示不允许上传,应该是设置了黑名单

方法一:修改文件后缀名为 .php1

上传成功

pass-4  

黑名单里没有限制 ".htaccess"

新建记事本,文件名".htaccess"输入以下内容保存。

<FilesMatch "1.png">  
        SetHandler application/x-httpd-php  
</FilesMatch>

命令允许: 1.png图片可被当作php文件,执行图片里的php代码.

#1.png为图片马

先上传".htaccess"文件,然后再上传"1.png"。

前提条件:

AllowOverride All,默认配置为关闭None。

LoadModule rewrite_module modules/mod_rewrite.so #模块为开启状态

上传目录具有可执行权限。

phpstudy版本为5.2.17

apache服务器

pass-5 

这一关限制后缀名很严格,包括大小写和.htaccess文件

绕过:使用双写绕过

使用bp抓包,修改后缀。

上传成功

pass-6

使用大写绕过

Pass-7

使用双写绕过,与pass-5一样

Pass-8

 使用 .. 绕过


Pass-9

使用 ::$DATA 绕过

Pass-10

方法一:. . (点空格点)

方法二:双写绕过

Pass-11

使用双写绕过

使用burp抓包,修改后缀

Pass-12

提示只允许上传 .jpg .png .gif 类型文件

使用%00截断 绕过

%00截断前提条件:

(1)PHP版本小于5.3.4

(2)php.ini中magic_quotes_gpc = Off

#环境配置正确,但是没有上传成功

%00截断原理参考:WEB-00截断与%00截断 | wh1te

Pass-13

使用图片马绕过

图片马绕过:需要使用文件包含漏洞运行图片马中的恶意代码

生成图片马方法:

1.图片使用HxD打开,在结尾加上一句话木马,并保存

2.照片大小控制在100K 以内

 上传成功

图片地址可以通过查看网页源代码,或者在图片上右键复制图像链接获得。

构造URL地址:

http://127.0.0.1/upload-labs/include.php?file=./upload/2420231207125031.jpg

使用蚁剑连接

Pass-14

本pass检查图标内容开头2个字节!

这一关需要上传三种图片马

生成图片马方法:

1.分别从网上下载三种格式的图片

2.用HxD打开,在结尾加上一句话木马   #三张图片都是在最后添加一句话马,并保存

3.照片大小控制在100K 以内

三张图片上传成功

在本关页面 点击  “文件包含漏洞”,可以得到文件包含漏洞所在url和代码,从如下代码可知,图片马可以通过file参数包含。

图片地址可以通过查看网页源代码,或者在图片上右键复制图像链接获得。

http://127.0.0.1/upload-labs/include.php?file=./upload/4320231207010933.png

.jpg .png  .gif 上传方式一样,都可以连接成功

Pass-15

本pass使用getimagesize()检查是否为图片文件!

这一关参考第14关

Pass-16

本pass使用exif_imagetype()检查是否为图片文件!

具体步骤参考第14关,三张图片都可以上传,蚁剑都可以连接

# 由于本关使用了exif_imagetype()函数,所以需要开启php_exif模块

小皮php_study,开启方法:

网站-->管理-->php扩展, exif 打上勾

Pass-17

本pass重新渲染了图片!

上传准备好的三张图片,发现蚁剑无法连接,使用HxD查看图片,发现上传的图片被渲染后,把php代码删除了。

将一句话木马插在其他位置,提示格式错误,应该是破坏了图片结构

#需要使用HxD对比上传前后的区别,将代码插入没有渲染的部分。

这里使用 .gif 图片

上传后的图片内容与原图片有很多改变,但是发现前半段内容和原图片是一样的

通过文件包含,使用蚁剑连接成功

Pass-18

这一关使用 条件竞争漏洞绕过

提示这一关需要代码审计

$is_upload = false;
$msg = null;if(isset($_POST['submit'])){$ext_arr = array('jpg','png','gif');$file_name = $_FILES['upload_file']['name'];$temp_file = $_FILES['upload_file']['tmp_name'];$file_ext = substr($file_name,strrpos($file_name,".")+1);$upload_file = UPLOAD_PATH . '/' . $file_name;if(move_uploaded_file($temp_file, $upload_file)){if(in_array($file_ext,$ext_arr)){$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;rename($upload_file, $img_path);$is_upload = true;}else{$msg = "只允许上传.jpg|.png|.gif类型文件!";unlink($upload_file);}}else{$msg = '上传出错!';}
}

       服务器先通过move_uploaded_file函数把文件保存了,然后再去判断后缀名是否合法,合法就重命名,如果不合法再删除。重点在于,在多线程情况下,就有可能出现还没处理完,我们就访问了原文件,这样就会导致防护被绕过。
  我们上传一个文件上去,后端会检验上传文件是否和要求的文件是否一致。如果不能达到要求就会删除文件,如果达成要求就会保留,那么当我们上传文件上去的时候,检测是否到达要求需要一定的时间,这个时间可长可短,但是我们确确实实在某一刻文件已经上传到了指定地址,并且访问到这个文件。这时候就会造成条件竞争。

move_uploaded_file()函数和unlink()函数:

条件竞争漏洞

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。

  上传文件源代码里没有校验上传的文件,文件直接上传,上传成功后才进行判断:如果文件格式符合要求,则重命名,如果文件格式不符合要求,将文件删除。
  由于服务器并发处理(同时)多个请求,假如a用户上传了木马文件,由于代码执行需要时间,在此过程中b用户访问了a用户上传的文件,会有以下三种情况:
  1.访问时间点在上传成功之前,没有此文件。
  2.访问时间点在刚上传成功但还没有进行判断,该文件存在。
  3.访问时间点在判断之后,文件被删除,没有此文件。

我们可以利用这个时间差进行攻击

这一关需要使用burp 设置两个流量包,一个持续上传木马的流量包,一个持续访问木马的流量包

1.创建一个cd.php的文件

内容如下:

<?php 
$f= fopen ("test.php","w") ;
fputs ($f,'<?php phpinfo();?>');
?>

#代码的作用就是,在访问到这个文件后,这个文件会在服务器的当前目录下创建一个test.php的文件,内容为<?php phpinfo();?>

2.上传php文件,使用burp抓包

#这个包是持续上传木马文件的流量包

3.将流量包发送至爆破模块

4.清空所有变量,不设置任何注入点

5.payloads设置中payload type选择null payloads,

   Generate:设置为 6000  #这个数字可填大一些

6.修改线程数量

7.快速访问URL

http://127.0.0.1/upload-labs/upload/cd.php

使用burp抓包,发送至爆破模块,设置参数与前6个步骤 一致   

#这个是持续访问木马文件的流量包

8.两个包同时点击 Start attack

攻击成功后,在上传目录里会自动生成一句话马

#如果没有成功,就再试一遍

成功访问木马URL地址

参考:

 https://www.cnblogs.com/vinslow/p/17053341.html

【文件上传绕过】——条件竞争漏洞_条件竞争上传漏洞-CSDN博客

Pass-19

这一关可以利用 apache解析漏洞+条件竞争 绕过

然而都没有绕过成功

最后使用图片马成功绕过

首先准备一张图片马,直接上传

上传后的地址:http://127.0.0.1/upload-labs/upload1702552082.jpg

图片已经重命名了,而且没有上传到upload目录,蚁剑无法连接

所以可以结合文件包含 绕过
http://127.0.0.1/upload-labs/include.php?file=./upload1702552082.jpg 

成功绕过

Pass-20

直接上传php文件,保存名称:upload-19.php

使用burp抓包

修改后缀

#也可以使用大写绕过,末尾加空格绕过,末尾加点绕过

上传成功

Pass-21

这一关是CTF题

上传1.php文件,保存名称:uploud-20.php

使用burp抓包

修改参数

修改前:

 修改后:

上传成功

参考: 

upload-labs_pass21_CTF逻辑老饶了_upload-labs pass21-CSDN博客

upload-labs通关(Pass-16~Pass-21)_18题目 u = new myupload($_files['upload_file']['name-CSDN博客

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

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

相关文章

Linux部署Nacos注册中心结合内网穿透实现远程访问UI管理界面

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik8. 结语 Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a…

多序列图像拼接

这里写自定义目录标题 图像匹配图像匹配代码 图像融合main.py运行代码 总的来说&#xff0c;步骤如下&#xff1a; 效果如下&#xff1a; 拼接好的图如下&#xff1a; 图像匹配 依次为 特征点提取&#xff0c;特征点筛选&#xff0c;图像变换。 常见的图像匹配算法有&…

2024上半年软考别轻易尝试!先了未发布

最近几年&#xff0c;软件考试变得非常受欢迎&#xff01;不论你的专业、学历或工作时间如何&#xff0c;你都可以报名参加&#xff0c;而且通过考试取得证书还能用来抵扣个人所得税、评职称、帮助落户和参与招投标等等。 身边的朋友们纷纷参加软考&#xff0c;这让我也产生了…

下一代实时数据库:Apache Doris 【六】数据划分

3.4 数据划分 3.4.1 列定义3.4.2 分区与分桶3.4.3 PROPERTIES3.4.4 ENGINE3.4.5 其他后记 3.4 数据划分 以 3.3.2 的建表示例来理解。 3.4.1 列定义 以 AGGREGATE KEY 数据模型为例进行说明。更多数据模型参阅 Doris 数据模型。 列的基本类型&#xff0c; 可以通过在 mysql-cli…

山区老人爱的礼物丨走进武隆区土地乡为山区老人送温暖

从车水马龙的城市到人烟稀少的乡村&#xff0c;穿越重峦叠嶂的高山&#xff0c;见到的是独属于大山的辽阔和山区老人眼中的星河。近日&#xff0c;传益千里为爱出发&#xff0c;在三棵柚公益基金会的支持下开展“山区老人爱的礼物”公益计划&#xff0c;走进武隆区土地乡&#…

Unity Meta Quest 一体机开发(十一):【手势追踪】远距离抓取

文章目录 &#x1f4d5;教程说明&#x1f4d5;玩家配置 DistanceHandGrabInteractor&#x1f4d5;物体配置 DistanceHandGrabInteractable&#x1f4d5;调整物体飞向手部的速度&#x1f4d5;调整探测物体的范围⭐HandFrustumNarraw⭐HandFrustumWide⭐HeadFrustum 此教程相关的…

探讨前端技术的未来:创新与适应的必要性

一、引言 2023年&#xff0c;IT圈似乎被一种悲观的论调所笼罩&#xff0c;那就是“Java 已死、前端已凉”。然而&#xff0c;真相是否如此呢&#xff1f;本文将围绕这一主题&#xff0c;探讨前端的现状和未来发展趋势。 二、为什么会出现“前端已死”的言论 这一言论的出现并…

盛元广通农产品质量检测实验室管理系统

盛元广通农产品质量检测实验室管理系统旨在打造智慧化市、区/镇、企业三位一体的区域安全监管体系&#xff0c;系统可以记录和追踪样品的来源、处理过程和结果&#xff0c;确保样品的安全性和可追溯性自动化检测流程&#xff0c;包括检测方法的设定、数据的记录和分析等&#x…

健康卤味思想引领市场新潮流,卤味市场迎来健康变革

健康卤味思想正在逐渐渗透到卤味市场中&#xff0c;引领着消费者对于卤味产品的选择和需求。这一变革不仅为消费者带来了更加健康、美味的卤味产品&#xff0c;也为卤味市场注入了新的活力。 一、健康卤味思想的兴起 随着消费者对于健康饮食的关注度不断提高&#xff0c;健康卤…

【node】 地址标准化 解析手机号、姓名、行政区

地址标准化 解析手机号、姓名、行政区 实现效果链接源码 实现效果 将东光县科技园南路444号马晓姐13243214321 解析为 东光县科技园南路444号 13243214321 河北省;沧州市;东光县;东光镇 马晓姐 console.log(address, phone, divisions,name);链接 API概览 源码 https://gi…

Java 基础学习(九)API概述、Object、String、正则表达式

1 API概述 1.1 API概述 1.1.1 什么是API API(Application Programming Interface)&#xff0c;意为&#xff1a;应用程序接口。API就是已经写好的的程序或功能&#xff0c;程序要需要时可以直接调用&#xff0c;无需再次编写。 API可以大致分为如下几类&#xff1a; 编程语…

美创“四大能力”为工业企业数据安全构筑韧性防线

12月14日&#xff0c;“数据与网络安全创新 赋能工业企业数字化转型”主题沙龙在杭州举行。本次活动由浙江省工业软件产业技术联盟、浙江省网络空间安全创新研究中心、浙江省图灵互联网研究院主办&#xff0c;浙江省网络空间安全协会数据安全治理专委会、杭州市计算机学会、长三…

华硕天选大小核设置

电脑:华硕天选4, CPU:13th Gen Intel(R) Core(TM) i9-13900H 2.60 GHz在奥创智控中心(Armoury Crate)调整大小核,应用重启即可

海思平台isp之raw图回灌调试

文章目录 一、搭建环境二、配置参数三、回灌raw图isp调试中,经常会遇到一些特定场景的效果需要优化,但由于某些原因和成本考虑,开发人员无法亲临现场,这个时候采集场景raw图回灌到板端调试,就显得尤为方便了。 一、搭建环境 (1)建立板端与PQTool连接 板端进入SS928V100…

架构设计系列之架构文化建设和遵循定律

这一部分我们一起来聊聊架构文化建设部分的内容。这里是涉及到对架构师的一些软实力和文化要求的部分&#xff0c;会从组织文化和架构设计中常见定律两部分来逐一讲解。 当我们说到软件架构时&#xff0c;不仅仅是指技术上的设计和决策&#xff0c;更涉及到组织的文化和价值观…

带你了解OpenCV4工业缺陷检测的六种方法

文章目录 OpenCV4工业缺陷检测的六种方法机器视觉缺陷检测1. 工业上常见缺陷检测方法方法一&#xff1a;基于简单二值图像分析实现划痕提取&#xff0c;效果如下&#xff1a;方法二&#xff1a;复杂背景下的图像缺陷分析&#xff0c;基于频域增强的方法实现缺陷检测&#xff0c…

vscode使用remote ssh到server上 - Node进程吃满CPU

起因&#xff1a;Node进程吃满CPU 分析 我发现每次使用vscode的remote插件登陆到server后&#xff0c;就会出现node进程&#xff0c;不太清楚干什么用的&#xff0c;但是绝对和它有关。 查找原因 首先找到了这篇文章&#xff0c;解决了rg进程的问题&#xff1a; https://blo…

docker 与 ffmpeg

创建容器 docker run -it -v /mnt/f/ffmpeg:/mnt/f/ffmpeg --name ffmpeg 49a981f2b85f /bin/bash 在 Linux 上编译 FFmpeg&#xff1a; 安装依赖库&#xff1a; sudo apt-get update sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget下…

JVM日常故障排查小结

前置知识 jstack简介 jstack是JVM自带的工具&#xff0c;用于追踪Java进程线程id的堆栈信息、锁信息&#xff0c;或者打印core file&#xff0c;远程调试Java堆栈信息等。 而我们常用的指令则是下面这条: # 打印对应java进程的堆栈信息 jstack [ option ] pid option常见选…

计算智能 | 粒子群算法

一、寻找非线性函数的最大值 这里我们使用python来求解《MATLAB智能算法30个案例分析》种第13章的内容。 我们使用基本粒子群算法寻找非线性函数 的最大值。 在Python程序中&#xff0c;我们规定粒子数为20&#xff0c;每个粒子的维数为2&#xff0c;算法迭代进化次数为300&…