文件上传漏洞靶场--upload-labs通关过程

文件上传漏洞靶场–upload-labs通关过程

Pass-01(前端验证)

点击提示:

在这里插入图片描述

提示我们该文件类型不允许上传,应该是前端对文件类型进行了验证。

对于前端验证,我们有多种方法可进行绕过:但burp抓包方便快速。

这里直接修改文件后缀名为白名单中的后缀名,然后抓包进行修改

在这里插入图片描述

直接将文件名改为1.php,然后进行上传

如图,表示上传成功。

在这里插入图片描述

Pass-02(MIME验证)

提示表示:本pass在服务端对数据包的MIME进行检查!

MIME是HTTP头文件中的Content-Type类型,如果上传的是PHP文件的话,对应的Content-Type就是text/html,而如果是合法上传的jpg文件的话,Content-Type就是image/jpg。

服务器在接收到请求时,会对Content-Type进行判断,合法则进行后续流程,不合法则终止上传。

对于MIME检测,我们可以使用burpsuite进行抓包修改,可以修改文件类型,然后抓包修改为php,也可以修改Content-Type为合法的Content-Type。

这里我们选择了修改文件后缀名,然后上传,抓包,修改后缀名,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VlXRKmlS-1647923609101)(文件上传漏洞靶场–upload-labs通关过程.assets/image-20220124205816323-16430290977861.png)]

可以看到upload路径已经有了2.php,表明上传成功。

在这里插入图片描述

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

提示:本pass禁止上传.asp|.aspx|.php|.jsp后缀文件

**注意:php语言除了可以解析以php为后缀的文件,还可以解析php2,php3、php4、php5这些后缀的文件。**如果黑名单定义不完整的话是可以实现绕过的,用.phtml .phps .php5 .pht进行绕过。这里我们直接上传一个.php5文件

在这里插入图片描述

结果如图

在这里插入图片描述

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

提示:本pass禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件!

.htaccess文件内容

<FilesMatch "4.jpg">
SetHandler application/x-httpd-php
AddType application/x-httpd-php .jpg				#将.jpg后缀的文件作为PHP文件解析
</FilesMatch>

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

上传一个.user.ini文件, php.ini是php默认的配置文件,其中包括了很多php的配置,而.user.ini实际上就是一个可以由用户“自定义”的php.ini,内容为:

auto_prepend_file=5.png

.user.ini配置参考的PHP 通过.user.ini 绕过黑名单限制,在.user.ini设置auto_prepend_file属性
下方的配置的意思是在.user.ini相同的目录下,所有的php文件都包含5.png这个文件
所以之后我们就可以利用到readme.php包含一个我们上传的木马文件,再连接readme.php文件达到连接一句话木马的目的

在这里插入图片描述

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

查看源码:

$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空

发现没有检测大小写(下面这个函数)

$file_ext = strtolower($file_ext); //转换为小写

去除对文件后缀名的转为小写设定,于是直接选择后缀名为.Php等非黑名单中存在的格式上传。

Pass-07(黑名单验证,空格绕过)

去除了对文件后缀名的空格过滤,选择后缀为.php的一句话上传,抓包后在后面增加空格,成功绕过

在这里插入图片描述

Pass-08(黑名单验证,点号绕过)

去除了对文件后缀名的点号过滤,选择选择后缀为.php的一句话上传,抓包后在后面增加点,成功绕

在这里插入图片描述

Pass-09(黑名单验证,特殊字符::$DATA绕过)

去除了对字符串:: D A T A 的 过 滤 , 选 择 选 择 后 缀 为 ‘ . p h p ‘ 的 一 句 话 上 传 , 抓 包 后 在 后 面 增 加 ‘ : : DATA的过滤,选择选择后缀为`.php`的一句话上传,抓包后在后面增加`:: DATA.php::DATA`,上传成功。
在这里插入图片描述

Pass-10(黑名单)

查看源码后,发现其路径拼接的是$file_name而不是$file_ext,而$file_name只处理了文件名末尾的点

在这里插入图片描述

Pass-11(黑名单验证,双写绕过)

查看源码后,发现其对存在黑名单中的字符进行替换,但str_ireplace()函数只替换一次,因此修改文件名为11.pphphp后成功绕过。
在这里插入图片描述

Pass-12(白名单验证,0x00截断)

查看源码和提示,上传路径可控,并且是最终文件的存放位置是以拼接的方式,可以使用%00截断,但需要php版本<5.3.4,并且magic_quotes_gpc关闭。原理是:php的一些函数的底层是C语言,而move_uploaded_file就是其中之一,遇到0x00会截断,0x表示16进制,URL中%00解码成16进制就是0x00。

在这里插入图片描述

Pass-13(白名单验证,0x00截断)

与Pass-12的区别是这里使用POST传地址,POST不会对里面的数据自动解码,需要在Hex中修改。

在这里插入图片描述

Pass-14(白名单验证,图片马)

上传图片马,查看源码后,意思是:读取上传文件的前两个字节内容,unpack解码后,使用intval转换为10进制,默认为10进制,根据转换后的结果判断图片类型。

copy 1.png /b + shell.php /a  webshell.jpg
  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!要通关 upload-labs 靶场的第 1-21 关,你需要依次完成每个关卡的任务。以下是通关每个关卡的一些提示: 1. Level 1 - 文件上传漏洞:尝试上传一个恶意文件,看看能否绕过上传限制。 2. Level 2 - 文件包含漏洞:尝试利用文件包含漏洞,读取服务器上的敏感文件。 3. Level 3 - XXE漏洞:在上传的 XML 文件中尝试触发外部实体注入。 4. Level 4 - SQL注入漏洞:利用输入点进行 SQL 注入攻击,尝试获取数据库中的敏感信息。 5. Level 5 - SSRF漏洞:尝试利用服务器端请求伪造漏洞,发起内部网络请求。 6. Level 6 - 文件上传漏洞2:绕过上传限制,上传一个恶意文件。 7. Level 7 - 文件包含漏洞2:利用文件包含漏洞,读取服务器上的敏感文件。 8. Level 8 - 反序列化漏洞:尝试触发反序列化漏洞,执行恶意代码。 9. Level 9 - 文件上传漏洞3:绕过上传限制,上传一个恶意文件。 10. Level 10 - 文件包含漏洞3:利用文件包含漏洞,读取服务器上的敏感文件。 11. Level 11 - XXE漏洞2:在上传的 XML 文件中触发外部实体注入。 12. Level 12 - SSRF漏洞2:尝试利用服务器端请求伪造漏洞,发起内部网络请求。 13. Level 13 - 文件上传漏洞4:绕过上传限制,上传一个恶意文件。 14. Level 14 - 文件包含漏洞4:利用文件包含漏洞,读取服务器上的敏感文件。 15. Level 15 - SQL注入漏洞2:利用输入点进行 SQL 注入攻击,尝试获取数据库中的敏感信息。 16. Level 16 - 文件上传漏洞5:绕过上传限制,上传一个恶意文件。 17. Level 17 - 文件包含漏洞5:利用文件包含漏洞,读取服务器上的敏感文件。 18. Level 18 - 反序列化漏洞2:尝试触发反序列化漏洞,执行恶意代码。 19. Level 19 - 文件上传漏洞6:绕过上传限制,上传一个恶意文件。 20. Level 20 - 文件包含漏洞6:利用文件包含漏洞,读取服务器上的敏感文件。 21. Level 21 - XXE漏洞3:在上传的 XML 文件中触发外部实体注入。 请注意,在完成每个关卡时,要仔细阅读相关提示和代码,理解漏洞的原理,并尝试不同的方法来解决问题。祝你顺利通关

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值