upload-labs笔记

news2024/11/15 5:01:58

简介

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.coloradmin.cn/o/1313002.html

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

相关文章

使用blip2进行图片输入文本输出

多模态的重要模型blip2,官方提供模型可以直接用来图片生成文本 github地址&#xff1a;https://github.com/salesforce/LAVIS/tree/main/projects/blip2 个人相当于跑了一下blip2的demo&#xff0c;记录下过程&#xff0c;供今后需要参考&#xff1a; 1、首先是环境安装&#…

Spring上下文之注解模块ConfigurationMethod

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

如何实现免费的文档翻译

文中有彩蛋&#xff0c;请一定要看完。 目录 文中有彩蛋&#xff0c;请一定要看完。 一、问题的提出 二、文档翻译现状 三、如何免费海量文档翻译 1. 采用CAT工具机器翻译API法 2. 采用小牛文档翻译 四、学后反思 一、问题的提出 随着互联网和人工智能技术的飞速发展&…

【力扣】19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 相比于昨天&#xff0c;感觉刷题越来越轻松了~ 我进步了&#xff01; 以后刷题力度要加快了&#xff0c;因为我报了蓝桥杯&#xff01;加油~ 法一&#xff1a;计算链表长度 思路&#xff1a; 首先用个函数来计算出该链表的长度&#xff0c;然…

接口返回HTML页面详解

import requests from bs4 import BeautifulSoup import re import jsonurl https://listado.mercadolibre.com.mx/hogar-muebles-jardin/cocina/almacenamiento-organizacion/organizadores-cocina/_CustId_570995983_PrCategId_AD# 添加 headers 和 cookies headers {User-…

批量解压imagenet1k数据集中的zip文件

导言&#xff1a; 最近在处理imagenet1k数据集时&#xff0c;面对大量的zip包&#xff0c;手动一个一个解压显然不是明智的选择。作为程序员&#xff0c;我们可以采用批量解压的方法来提高效率&#xff0c;下面就是解决这一问题的方法和原因分析。 问题背景&#xff1a; image…

拆解大语言模型 RLHF 中的PPO算法

为什么大多数介绍大语言模型 RLHF 的文章&#xff0c;一讲到 PPO 算法的细节就戛然而止了呢&#xff1f;要么直接略过&#xff0c;要么就只扔出一个 PPO 的链接。然而 LLM x PPO 跟传统的 PPO 还是有些不同的呀。 其实在 ChatGPT 推出后的相当一段时间内&#xff0c;我一直在等…

11月,1Panel开源面板项目收到了这些评论

2023年11月24日&#xff0c;1Panel开源面板项目&#xff08;https://github.com/1Panel-dev&#xff09;发布了题为《10月&#xff0c;1Panel开源面板收到了这些评论》的社区评论合集。在该文章的评论区&#xff0c;很多社区用户跟帖发表了自己对1Panel开源项目的使用感受和意见…

【思考】只有实对称矩阵才能正交对角化吗?【矩阵的合同】

1&#xff1a;命题改写&#xff08;A可以正交对角化&#xff09; 2&#xff1a;左乘Q右乘Q逆&#xff08;Q转置&#xff09; 3&#xff1a;取转置 4&#xff1a;得证 总结 可以看到&#xff0c;矩阵如果可以正交对角化&#xff0c;那么一定是实对称矩阵。 另外&#xff0c;这…

stm32项目(12)——基于stm32f407zgt6的频率计设计

1.项目功能 配置stm32自带的定时器&#xff0c;以一定的周期产生中断&#xff0c;在中断服务函数里面&#xff0c;对某个IO口进行取反&#xff0c;这样就在该管脚上产生了一定频率的方波&#xff08;频率可以用按键调节&#xff09;。然后再使用stm32的捕获功能&#xff0c;对产…

Python语言学习笔记之十一(DotEnv)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 1、认识Python DotEnv dotenv是Python中的一个工具包&#xff0c;它主要用于谈取项目中的.env文件&#xff0…

科研论文中PPT图片格式选择与转换:EPS、SVG 和 PDF 的比较

当涉及论文中的图片格式时&#xff0c;导师可能要求使用 EPS 格式的图片。EPS&#xff08;Encapsulated PostScript&#xff09;是一种矢量图格式&#xff0c;它以 PostScript 语言描述图像&#xff0c;能够无损地缩放并保持图像清晰度。与像素图像格式&#xff08;如 PNG 和 J…

VR智慧眼:为各行业打造3D数字化业务协同平台

自改革开放以来&#xff0c;城镇化建设一直在不断推进实施&#xff0c;如今各城市化速度虽然在不断加快&#xff0c;但随之而来的部分城市开始出现资源短缺、环境污染、交通拥堵、安全隐患等问题&#xff0c;因此为了满足智慧城市大型区域场景数字化升级需求&#xff0c;助力区…

SQL Server数据库使用T-SQL语句简单填充

文章目录 操作步骤&#xff1a;1.新建数据库起名RGB2.新建表起名rgb3.添加三个列名4.点击新建查询5.填入以下T-SQL语句&#xff0c;点击执行&#xff08;F5&#xff09;6.刷新之后&#xff0c;查看数据 操作环境&#xff1a; win10 Microsoft SQL Server Management Studio 20…

【项目管理】CMMI对项目管理有哪些个人启发和思考

导读&#xff1a;本人作为项目经理参与公司CMMI5级评审相关材料准备工作&#xff0c;现梳理CMMI有关知识点&#xff0c;并结合项目给出部分示例参考&#xff0c;以及本人对于在整理材料过程中一些启发和体验思考。 目录 1、CMMI定义 2、CMMI-5级 3、CMMI文档清单 4、示例-度…

【Spring Boot】Starter机制的使用及案例

一、引言 1、什么是SpringBoot Starter SpringBoot中的starter是一种非常重要的机制(自动化配置)&#xff0c;能够抛弃以前繁杂的配置&#xff0c;将其统一集成进starter&#xff0c;应用者只需要在maven中引入starter依赖&#xff0c;SpringBoot就能自动扫描到要加载的信息并启…

7+m6A+分型+实验,甲基化方向的生信思路,没有思路的同学可参考

今天给同学们分享一篇生信文章“Landscape analysis of m6A modification regulators related biological functions and immune characteristics in myasthenia gravis”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影响因子为7.4。 结果解读&#xff1a; MG相…

Notes Domino 14.0正式版发布

大家好&#xff0c;才是真的好。 经过12个月的等待&#xff0c;经过三个Beta版本的迭代&#xff0c;昨天晚上11:00&#xff0c;Notes Domino 14.0版本正式发布&#xff01; 过去半年&#xff0c;经过我们对三个Beta版本不断的测试和介绍&#xff0c;一些新功能可能大家已经了…

基于Java的在线教育平台设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对学生课程学习信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…

人工智能如何改变未来的教育

人工智能&#xff08;AI&#xff09;正在以惊人的速度发展&#xff0c;并有可能彻底改变我们生活的方方面面&#xff0c;包括教育。AI 可以用于提高教学效率、个性化学习体验和扩大教育机会。 在教学效率方面&#xff0c;AI 可以用于自动化许多繁琐的教学任务&#xff0c;例如…