upload-labs通关攻略教程二【12-18关】

本文详细介绍了upload-labs的12至18关的破解方法,涉及白名单验证、00截断、文件头检测、getimagesize函数、exif_imagetype、二次渲染和条件竞争等安全问题。通过源码分析和实战技巧,展示了如何利用各种方法绕过文件上传限制,包括使用00截断、文件头篡改、图片马制作等技术。

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


upload-labs通关攻略教程一(1-11关)

Pass-12-(白名单验证,get型00截断)

  1. 查看题目源码
    在这里插入图片描述
    白名单判断,只允许三种文件类型。strrpos(string,find,start)函数查找字符串中最后一次出现的位置,这里是将后缀名提取赋值给file_exit.$img_path是直接拼接,我们可以通过抓包修改get参数,然后通过file_ext无效,这样就可以上传php文件因此可以利用%00【使用00%00均可以】截断绕过。
    %00截断的概念和原理
    url%00表示ASCll码中的0,而0作为特殊字符保留,表示字符结束;
    url中出现%00时就认为读取已结束,而忽略后面上传的文件或者图片,只上传截断前的文件或图片。
    要求php版本小于5.3.4,且php中的magic.quotes.gpcOFF状态
  2. 将路径改为path="upload/1.php%00"拼接之后,文件上传时就变成了"upload/1.php%001.jpg",这时上传便将1.php上传进去,而1.jpg被截断。在这里插入图片描述
  3. 拖拽点击图片,看到php配置页面,即可说明上传成功。在这里插入图片描述
  4. 使用上述同样方法上传一句话木马,使用蚁剑连接即可。

Pass-13-(白名单验证,POST型00截断)

与第十二关的区别在于这里是使用POST传地址,POST不会对里面的数据自动解码,需要使用hex(十六进制编码)加上00截断。因此在本关不可以使用%00,需要使用00

  1. 上传含有一句话的文件1.jpg,使用burp抓包后,在上传路径出添加文件名1.phpa
  2. 使用burp中的hex模块在php后面a对应的位置添加00进行截断,即在1.phpa十六进制编码中a对应的hex编码改为00,点击send,查看响应。放包后,拖拽点击图片,即可看到php配置的页面,说名上传成功。【若用蚁剑连接,要注意文件名被修改,可以使用burp或者点击打开图片查看被修改后的文件名。】

Pass-14-文件头检测

方法1

  1. 查看源码和提示,源码意思为上传时只检查开始前两个字节的内容,unpack解密后,使用intval转换为10进制,默认为十进制,根据转换后的结果判断图片类型。大致想法可以使用图片木马的方式来实现绕过。在这里插入图片描述
  2. 使用010editor制作图片马,要注意将一句话木马插在图片数据靠中间的位置。在这里插入图片描述
  3. 上传成功后拖拽点击图片,看到php配置页面,说明上传成功。若采用蚁剑连接一句话木马的方法,要特别注意上传图片的文件名会被修改。(例如本关我上传的是2.png,上传成功后被修改的文件名如下)在这里插入图片描述
  4. 使用蚁剑连接时要注意,不可以直接连接,应该配合文件包含漏洞【在程序开发过程中,开发人员通常会把重复使用的函数写进单个文件中,在使用某个函数的时候,直接调用文件,这种调用文件的过程称为包含。程序开发人员都希望代码更加灵活,所以通常会把包含的文件设置为变量进行动态调用,但正是因为如此,导致客户端可以调用任意文件,造成文件包含漏洞,几乎所有的脚本语言都会提供文件包含功能】中的file协议【访问本次系统文件】。文件包含在读取文件源码的同时,如果遇到符号PHP语法规范的代码,就会无条件执行。
  5. 使用文件包含漏洞来连接图片马。(该靶场所有关均可以使用文件包含)在这里插入图片描述

方法2

  1. 上传含有一句话木马的php文件,并使用burp抓包。
  2. 由于源码中提示,只允许jpg、png、gif三种后缀,因此在这里我们可以考虑在burp中添加GIF图片的文件头GIF89a,绕过GIF图片检查。(或者在010editor中打开图片,添加对应的文件头格式)在这里插入图片描述
    在这里插入图片描述
  3. 使用蚁剑连接时方法同上述方法1.

方法3

使用命令行生成图片马,也可以使用图+木马+图。【但存在有的图片与一句话木马不兼容,图片最好越小越好】
在这里插入图片描述

Pass-15-getimagesize函数(php中用来判断目标文件是否为图片)

  1. 查看源码,再查看提示,使用getimagesize()来检查是否为图片格式,比如图片的长度和高度等。,因为源码中要求限制只有三种后缀允许上传,因此可以考虑制作图片木马。

在这里插入图片描述

  1. 使用010editor在图片数据中间插入一句话木马,并保
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

poggioxay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值