upload-labs通关记录

本文详细介绍了多种文件上传漏洞的攻击过程及原理,包括客户端检测、MIME类型验证、黑名单过滤、.htaccess配置、.user.ini利用、大小写与空格绕过、Windows特性绕过、00截断、图片码与包含漏洞结合等。内容涵盖了从基础的文件类型检查到复杂的绕过技巧,揭示了文件上传安全的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

upload-labs通关记录

1.Pass-01

  • 原理

    客户端检测,仅仅通过使用JavaScript来拒绝非法文件上传。

  • 攻击过程

    上传一个1.jpg文件,使用burp将.jpg修改为.php

    # 1.jpg
    <?php 
    	phpinfo();
    ?>
    

    在这里插入图片描述
    ​上传成功后,访问图片地址
    在这里插入图片描述

2.Pass-02(MIME验证)

  • 原理

    MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,浏览器会自动使用指定的应用程序来打开。

  • 攻击过程

    上传1.php ,因为服务器会检测Content-Type的值,所以修改为image/jpeg

    在这里插入图片描述
    ​ 上传成功后访问地址
    在这里插入图片描述

3.Pass-03(黑名单验证,特殊后缀)

  • 原理

    黑名单过滤是一种不安全的方式,黑名单定义了一系列不安全的扩展名,服务器端在接收文件后,与黑名单扩展名进行对比,如果发现文件扩展名与黑名单里的扩展名匹配,则认为文件不合法。

  • 攻击过程

    上传1.php 文件,通过burp 修改文件后缀为.php3

    在这里插入图片描述
    ​ 上传成功后,复制图片地址,并访问,发现图片做了重命名
    在这里插入图片描述
    注:这一关有条件,httpd.conf需要配置AddType ,不然会出现无法解析的情况

#修改httpd.conf AddType
AddType application/x-httpd-php .php .phtml .php5 .php3
AddType指令是在给定的文件扩展名与特定的内容类型之间建立映射关系。
AddType是与类型表相关的,描述的是扩展名与文件类型之间的关系。

4.Pass-04(黑名单验证,.htaccess)

  • 原理

    # .htaccess
    .htaccess文件是Apache服务器中的一个配置文件,可以实现网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
    启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
    注: .htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。
    
    # .htaccess 文件内容
    SetHandler application/x-httpd-php
    
  • 攻击过程

    上传.htaccess 文件,然后再上传4.png图片,上传成功后,复制图片地址,访问

    在这里插入图片描述

​ 注:访问图片地址可能会遇到不能解析的情况,需要修改httpd.conf

<Directory "/var/www/html">

    Options Indexes FollowSymLinks
    AllowOverride all  #将None改为all
    Require all granted
</Directory>

5.Pass-05(黑名单验证,.user.ini)

  • 原理

    # .user.ini
    自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用.htaccess 文件有同样效果。
    
    #编写.user.ini文件
    auto_prepend_file=5.jpg  #所有的php文件都自动包含5.jpg文件
    
  • 攻击过程

    这一关服务器Server API 需要使用CGI/FastCGI ,先上传.user.ini,然后再上传5.jpg,后面访问5.jpg发现发生错误
    在这里插入图片描述

    因为原理是所有的php文件都自动包含5.jpg ,所以可以访问上传目录下的readme.php(本关一开始就存在的文件)
    在这里插入图片描述
    readme.php 文件
    在这里插入图片描述

6.Pass-06(黑名单验证,大小写绕过)

  • 原理

    这一关也是同样的设置了黑名单,但是没有强制将大写转换为小写

  • 攻击过程

    修改文件后缀为.phP然后上传
    在这里插入图片描述

7.Pass-07(空格绕过)

  • 原理

    没有对后缀去空处理,没有对大小写进行转换,所以可以在后缀名加空格绕过

  • 攻击过程

    在这里插入图片描述
    ​ 复制连接并访问
    在这里插入图片描述

8.Pass-08(windows特性加点绕过)

  • 原理

    没有对后缀名".“进行处理,利用windows特性,会自动去掉后缀名中最后的”.".可在后缀中加"."绕过

  • 攻击过程

    使用burp修改文件后缀为1.php.

    在这里插入图片描述
    ​ 复制链接访问
    在这里插入图片描述

9.Pass-09(::$DATA绕过)

  • 原理

    在window的时候如果文件名+’:: D A T A ′ 会 把 : : DATA'会把:: DATA::DATA之后的数据当成文件流处理,不会检测后缀名。且保留:: D A T A 之 前 的 文 件 名 。 利 用 w i n d o w s 特 性 , 可 在 后 缀 名 中 加 : : DATA之前的文件名。利用windows特性,可在后缀名中加:: DATAwindows::DATA绕过

  • 攻击过程

    使用burp修改文件后缀1.php::$DATA
    在这里插入图片描述

    访问的时候需要去掉::$DATA
    在这里插入图片描述

10.Pass-10(点空点绕过)

  • 原理

    这关处理文件后缀的方式是先去除最后的点,然后再去除文件名前后的空格,所以可以利用1.php. .绕过,这样上传的文件经处理变成了1.php.

  • 攻击过程

    利用burp修改文件后缀1.php. .

    在这里插入图片描述
    ​复制图片链接访问,发现后缀变成了1.php.
    在这里插入图片描述

11.Pass-11(双写绕过)

  • 原理

    这一关会将黑名单的后缀用空来替换,所以可以利用双写来绕过

  • 攻击过程

    利用burp修改文件后缀
    在这里插入图片描述
    ​ 复制图片链接并访问
    在这里插入图片描述

12.Pass-12(GET请求00截断)

  • 原理

    可以在后缀名后加.php%00截断后面的内容

  • 攻击过程

    使用burp修改后缀名
    在这里插入图片描述
    ​ 复制图片连接并访问
    在这里插入图片描述

# 00截断使用条件
php版本低于5.3,且magic_quotes_gpc关闭状态
phpstudy可以方便的更改,没有找到的可以去php.ini里修改

13.Pass-13(Post请求00截断)

  • 原理

    可以在后缀名后加.php%00截断后面的内容,这次和get不同,get方法会自动解码,但是POST不会,所以需要对%00进行url解码

  • 攻击过程

    使用burp修改数据包
    在这里插入图片描述
    ​ 复制图片连接并访问
    在这里插入图片描述

14.Pass-14(图片码绕过)

  • 原理

    网站存在文件包含漏洞,访问网站的php页面并包含有php代码的图片进行攻击

  • 攻击过程

    # 制作图片码
    copy 14.jpg /b + 14.php /a webshell.jpg
    

    制作成功后上传,复制图片连接访问
    在这里插入图片描述

15.Pass-15(图片码绕过)

  • 原理

    getimagesize函数:这个函数会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求
    
  • 攻击过程

    制作图片码上传,包含图片访问
    在这里插入图片描述

16.Pass-16(图片码绕过)

  • 原理

    本pass使用exif_imagetype()检查是否为图片文件,这个函数会读取图像的第一个字节并检查其签名

  • 攻击过程

    制作图片码上传,包含图片访问
    在这里插入图片描述
    ​ 需要开启插件
    在这里插入图片描述

17.Pass-17(二次渲染)

  • 原理

    imagecreatefromipeg()函数,图片上传后,图片中的ph代码会被删除

  • 攻击过程

    把原图和修改过的图片进行比较
    在这里插入图片描述
    ​ 在未修改部分插入php代码
    在这里插入图片描述
    复制图片连接访问
    在这里插入图片描述

18.Pass-18(条件竞争)

  • 原理

    文件上传先上传到后台再对文件进行检测,不符合再删除,符合再修改名字

  • 攻击过程

    ​ 在文件上传后立刻就访问文件,服务器就不会删除文件。
    在这里插入图片描述
    ​ burpsuite设置无限制访问同时使用python访问1.php

import requests
def main():
	i=0
	while True:
		try:
			print(i,end='\r')
			a=requests.get("http://192.168.184.131/upload-labs/upload/1.php")
			if "PHP Version" in a.text:
				print("OK")
				break
		except Exception as e:
			pass
		i+=1
if __name__ == '__main__':
    main()

19.Pass-19(图片码配合包含漏洞)

  • 原理

    这关会先检查后缀名然后在进行二次渲染,所以只能上传图片码再配合包含漏洞

  • 攻击过程

    使用burpsuit 持续上传图片码
    在这里插入图片描述
    ​ 使用python访问
    在这里插入图片描述

20.Pass-20(/.绕过)

  • 原理

    move_uploaded_file()会忽略掉文件末尾的/.
    
  • 攻击过程

    使用burpsuit 修改数据包
    在这里插入图片描述
    ​ 复制图片连接并访问
    在这里插入图片描述

21.Pass-21(数组绕过)

  • 原理

    会判断文件名是否是array数组(jpg,png,gif),不是的话会分割文件名和后缀名再进行白名单验证。

  • 攻击过程

    使用burpsuit修改数据包
    在这里插入图片描述
    ​ 复制图片链接访问
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值