upload-labs通关

文章详细描述了一系列基于PHP的文件上传安全问题及其绕过方法,包括前端验证、MIME检查、黑名单过滤、.htaccess重写规则利用、特殊字符如`.`、`::$DATA`、大小写转换和`%00`截断等技巧,展示了如何通过各种手段规避安全验证并成功上传恶意文件。
摘要由CSDN通过智能技术生成

第一关

1.上传php一句话,抓包,发现抓不到,说明没有数据被发送到服务器,典型的前端验证
在这里插入图片描述
2.上传个普通图片发现可以,那我不就可以把我要上传的代码改个后缀上传上去了,然后抓个包改回php格式不就好了
在这里插入图片描述

3.把要上传的shell.php改成shell.png上传,并抓包
在这里插入图片描述

4.shell.php改成shell.png,发送

在这里插入图片描述

5.测试成功
在这里插入图片描述

第二关

1.看提示mime检查,直接抓包改包
在这里插入图片描述

2.上传shell并抓包,修改mime
在这里插入图片描述

3.修改为image/png,发出去
在这里插入图片描述

4.成功
在这里插入图片描述

第三关

1.看提示,黑名单,查后缀,可用.phtml .phps .php5 .pht进行绕过
在这里插入图片描述

2.这里改成了shell3.php5
在这里插入图片描述

3.注意这时候的文件名已经不是shell3了,看源码可以看到上传到服务器的名字
在这里插入图片描述

4.测试成功
在这里插入图片描述

第四关

1.查看提示,禁止一大堆,这关考察的是.htaccess这个配置文件,.htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的作用。
在这里插入图片描述

首先创建一个.htaccess文件,里面写上代码,这代码作用就是告诉服务器收到名为4.png的文件要用php去打开

<FilesMatch "4.png">
SetHandler application/x-httpd-php

3.将刚才的文件直接上传
在这里插入图片描述

4.上传代码4.png,最后直接访问就好

第五关

1.这一关的思路是它没有循环验证,也就是说这些收尾去空,删除末尾的点,去除字符串::$DATA,转换为小写这些东西只是验证了一次。直接上传普通文件,shell5.php改成shell5.php. .,然后直接发送即可

在这里插入图片描述

第六关

1.查看提示,一大堆,但是看代码发现没有强制大小写转换,所以直接改成大写PHP就可以直接上传了
在这里插入图片描述

2.注意文件名字上传的时候被随机改了,要在源码中找到被改后的文件名访问
在这里插入图片描述

第七关

1.查看源码,发现没有收尾去空
在这里插入图片描述

2.抓包,直接在后缀加空格,这样上传到服务器识别的时候,服务器会自动去掉最后的空格 7.php后面加空格
在这里插入图片描述

3.上传成功后注意地址,在源码里变成了一堆数字
在这里插入图片描述

第八关

1.查看源码,发现没有删除文件末尾的点,直接抓包在最后加个点。
在这里插入图片描述

第九关

1.查看代码发现没有去除字符串::$DATA,
注意:

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,(也就是说,会自动过滤掉文件的后缀名)
且保持::$DATA之前的文件名,他的目的就是不检查后缀名
例如:
  "shell.php::$DATA",      Windows会自动去掉末尾的::$DATA变成"shell.php"


2.故直接在后面加上::$DATA
在这里插入图片描述

3.注意文件名,访问这个名就成功了
在这里插入图片描述

第十关

1.看源码,只做了一次验证,去空,去点,直接在结尾加 . .
在这里插入图片描述

第十一关

这关的意思是如果你上传了上面规定的文件,他就会把你的后缀名去掉,比如你上传了11.php,那么他就会把你的php过滤掉。文件没有了后缀名,自然也就无法解析了。但是他是一次过滤,也就是说我们写两个php就可以了:11.pphphp,他过滤掉一个,正好剩下了11.php
在这里插入图片描述

黑名单总结

这些全部为黑名单绕过,而且只是验证一次,所以这些关卡全部可以用一个思路解出来,那就是.php. . 都是可以这样的,但作者是想让我们知道一些可以绕过的特殊格式,‘.’,‘::$DATA’,改大小写,结尾加空格,加点,双后缀等

第12关:%00截断

1.%00只能用于php版本低于5.3的,他的作用例如你上传一个11.php的文件,但是服务器解析成11.php12345677.php,而加上11.php%00后,会自动截断后面的文件名
2.在请求方式中的文件地址里面加上文件名+%00即可
在这里插入图片描述

第13关

1.和第十二关是差不多的,只不过请求方式变成了post,她两的差别就是get会自行解码,post不会自行解码,我们需要对%00进行编码,选中%00右键

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青衫木马牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值