当前位置: 首页 > news >正文

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博客

相关文章:

upload-labs笔记

简介 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关&#xff0c;每一关都包含着不同上传方式。 文件上传漏洞是指&#xff1a; Web 服务器允许用户将文件上传至其…...

Android Studio好用的插件推荐

目录 一、插件推荐 二、如何下载 1.点击File—>Settings ​2.点击Plugins然后进行搜索下载 三、Android Studio 模板 一、插件推荐 这个插件可以为您自动生成Parcelable代码。Parcelable是一种用于在Android组件之间传递自定义对象的机制&#xff0c;但手动编写Parcela…...

第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出

文章目录 第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出控制导出时的命名空间前缀XMLPREFIX 第三十九章 其他特殊主题 - 映射 IRIS ID 以供导出 当在顶层映射 IRIS 对象&#xff08;而不是作为另一个对象的属性&#xff09;时&#xff0c;其内部 ID、OID 和全局唯一 ID 不…...

文件操作(下)

标题的顺序是接着之前写的&#xff0c;希望这篇博客对你有帮助 七. 随机读写函数 实际上&#xff0c;无论是读还是写&#xff0c;在一次调用顺序读写函数&#xff0c;文件指针会移到已经读过或者写过的下一个位置&#xff0c;从那个位置开始下一次读和写&#xff08;在文件没有…...

面试必问-vue3中ref与这个reactive的区别

ref和reactive是Vue 3中两种不同的响应式数据处理方式。 ref&#xff1a;ref函数可以将普通的Javascript值转换为一个响应式引用。它返回一个包含.value属性的对象&#xff0c;可以通过读取或修改.value来操作引用的值。当引用的值发生变化时&#xff0c;Vue会自动追踪依赖并更…...

网络(九)三层路由、DHCP以及VRRP协议介绍

目录 一、三层路由 1. 定义 2. 交换原理 3. 操作演示 3.1 图示 3.2 LSW1新建vlan10、20、30&#xff0c;分别对应123接口均为access类型&#xff0c;接口4为trunkl类型&#xff0c;允许所有vlan通过 3.3 LSW2新建vlan10、20、30&#xff0c;配置接口1为trunk类型&…...

深度学习 Day19——P8YOLOv5-C3模块实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言1 我的环境2 代码实现与执行结果2.1 前期准备2.1.1 引入库2.1.2 设置GPU&#xff08;如果设备上支持GPU就使用GPU,否则使用C…...

轻量封装WebGPU渲染系统示例<51>- 视差贴图(Parallax Map)(源码)

视差纹理是一种片段着色阶段增强材质表面凹凸细节的技术。 这里在WebGPU的实时渲染材质管线中实现了视差贴图计算&#xff0c;以便增强相关的纹理细节表现力。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/Para…...

YOLOv8改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点

一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络&#xff0c;其是今年最新推出的主干网络&#xff0c;VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单&#xff0c;层数较少&#xff0c;避免了像深度架构和自注意力这样的复杂操作(需要注意的是…...

Leetcode 376 摆动序列

题意理解&#xff1a; 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 如果是摆动序列&#xff0c;前后差值呈正负交替出现 为保证摆动序列尽可能的长&#xff0c;我们可以尽可能的保留峰值&#xff0c;&#xff0c;删除上下坡的中间值&…...

51单片机控制1602LCD显示屏输出自定义字符二

51单片机控制1602LCD显示屏输出自定义字符二 1.概述 1602LCD除了内置的字符外还提供自定义字符功能&#xff0c;当内置的字符中没有我们想要输出的字符时&#xff0c;我们就可以自己创造字符让他显示&#xff0c;下面介绍1602如何创建自定义字符。 2.1602LCD创建字符原理 自…...

HarmonyOS自学-Day2(@Builder装饰器)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;Builder装饰器&#xff1a;自定义构建函数Builder介绍Builder使用说明自定义组件中创建自定义构建函数全局自定义构建函数 Builder参数传递规则按引用传递参数按值传递参数 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程…...

bottom-up-attention-vqa-master 成功复现!!!

代码地址 1、create_dictionary.py 建立词典和使用预训练的glove向量 &#xff08;1&#xff09;create_dictionary() 遍历每个question文件取出所关注的question部分&#xff0c;qs 遍历qs&#xff0c;对每个问题的文本内容进行分词&#xff0c;并将分词结果添加到字典中&…...

BigDecimal中divide方法详解

BigDecimal中divide方法详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入探讨Java中BigDecimal的divide方法&#xff0c;揭开这个…...

视频推拉流EasyDSS互联网直播/点播平台构建户外无人机航拍直播解决方案

一、背景分析 近几年&#xff0c;国内无人机市场随着航拍等业务走进大众&#xff0c;出现爆发式增长。无人机除了在民用方面的应用越来越多&#xff0c;在其他领域也已经开始广泛应用&#xff0c;比如公共安全、应急搜救、农林、环保、交通 、通信、气象、影视航拍等。无人机使…...

行为型设计模式-策略模式(Strategy Pattern)

策略模式 策略模式&#xff1a;百度百科中引述为&#xff1a;指对象有某个行为&#xff0c;但是在不同的场景中&#xff0c;该行为有不同的实现算法。 策略模式是对算法的包装&#xff0c;是把使用算法的责任和算法本身分割开来&#xff0c;委派给不同的对象管理。策略模式通…...

html中RGB和RGBA颜色表示法

文章目录 RGB什么是RGBRGB颜色模式的取值范围RGB常用颜色对照表 RGBA什么是RGBARGBA颜色模式的取值范围 总结 RGB 什么是RGB RGB是一种颜色空间&#xff0c;其中R代表红色&#xff08;Red&#xff09;、G代表绿色&#xff08;Green&#xff09;、B代表蓝色&#xff08;Blue&a…...

【BEV感知】BEVFormer 融合多视角相机空间特征和时序特征的端到端框架 ECCV 2022

前言 本文分享BEV感知方案中,具有代表性的方法:BEVFormer。 基本思想:使用可学习的查询Queries表示BEV特征,查找图像中的空间特征和先前BEV地图中的时间特征。 它基于Deformable Attention实现了一种融合多视角相机空间特征和时序特征的端到端框架,适用于多种自动驾驶感…...

git拉取hugging face代码失败:443

报错信息&#xff1a;fatal: unable to access http://huggingface.co/THUDM/chatglm2-6b/: OpenSSL SSL_connect: Connection reset by peer in connection to huggingface.co:443 解决方法&#xff1a;&#xff08;127.0.0.1:7890配置为自己的实际代理ip及端口&#xff09; …...

【赠书活动】OpenCV4工业缺陷检测的六种方法

文章目录 前言机器视觉缺陷检测工业上常见缺陷检测方法延伸阅读推荐语 赠书活动 前言 随着工业制造的发展&#xff0c;对产品质量的要求越来越高。工业缺陷检测是确保产品质量的重要环节&#xff0c;而计算机视觉技术的应用能够有效提升工业缺陷检测的效率和精度。 OpenCV是一…...

设计模式之创建型设计模式(一):单例模式 原型模式

单例模式 Singleton 1、什么是单例模式 在软件设计中&#xff0c;单例模式是一种创建型设计模式&#xff0c;其主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 这意味着无论何时需要该类的实例&#xff0c;都可以获得相同的实例&#xff0c;而不会创建…...

Amazon CodeWhisperer 在 vscode 的应用

文章作者:旧花阴 CodeWhisperer 是一款可以帮助程序员更快、更安全地编写代码的工具&#xff0c;可以在他们的开发环境中实时提供代码建议和推荐。亚马逊云科技发布的这款代码生成工具 CodeWhisperer 最大的优势就是对于个人用户免费。以在 vscode 为例&#xff0c;演示安装过程…...

【Java】基于fabric8io库操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service&#xff08;含Deployment&#xff09;2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…...

uniapp微信小程序下载保存图片流到本地,base64

我们在开发时下载图片或文件&#xff0c;地址基本上都是https的格式&#xff0c;下面来说一下后端返回base64的文件流&#xff0c;是如何下载的 必须把返回的流去掉这一部分&#xff1a;data:image/png;base64&#xff0c;否则下载不了 如我自己的流&#xff1a; data:image/…...

华为数通——企业双出口冗余

目标&#xff1a;默认数据全部经过移动上网&#xff0c;联通低带宽。 R1 [ ]ip route-static 0.0.0.0 24 12.1.1.2 目的地址 掩码 下一条 [ ]ip route-static 0.0.0.0 24 13.1.1.3 preference 65 目的地址 掩码 下一条 设置优先级为65 R…...

送奶APP开发:终极指南

您是否有兴趣使用新鲜牛奶和乳制品&#xff0c;但不想每天早上去乳制品店或最近的商店&#xff1f;借助技术&#xff0c;订购日常用品&#xff08;例如杂货和牛奶&#xff09;变得更加简单。 DailyMoo 是最受欢迎的送奶应用&#xff0c;收入达数百万人民币。因此&#xff0c;投…...

Ngnix之反向代理、负载均衡、动静分离

目录 1. Ngnix 1.1 Linux系统Ngnix下载安装 1.2 反向代理 正向代理&#xff08;Forward Proxy&#xff09;&#xff1a; 反向代理&#xff08;Reverse Proxy&#xff09;&#xff1a; 1.3 负载均衡 1.4 动静分离 1. Ngnix Nginx是一个高性能的开源Web服务器&#xff0…...

(C++)将x减到0的最小操作数--滑动窗口

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…...

回答某位同学的问题:残差网络常用来分类,可以用于回归预测吗?

残差网络可以用于回归预测&#xff0c;以下是我的观点&#xff1a; 残差网络最初是用于计算机视觉和语音识别等分类任务,但它也可以用于回归预测。在回归预测任务中,我们预测的目标变量通常是一个连续值,而不是一个离散的类别。使用残差网络进行回归预测的主要思路是: 定义一个…...

C语言初学5:运算符

一、算数运算符 假设变量 A 的值为 10 运算符描述实例A先赋值后运算C A C为10 A为11A--C A-- C为10 A为9A先运算后赋值C A C为11 A为11--AC --A C为9 A为9 二、位运算符 运算符描述实例&对两个操作数的每一位执行逻辑与操作&#xff0c;如果两个相应的位都为 1&…...