文件上传upload-labs-master靶场通关

 Pass-1

首先新建一个php文件,这里我命名为phpinfo.php

同时打开代理,用bp抓包,发现bp并没有抓取到包,并且网页弹出弹窗。这样我们可以知道其利用了js来检验上传文件的格式。可以先将上传文件的格式改为符合要求的格式,这里我改为phpinfo.php,然后再改包。

把文件后缀名改成png,上传抓包。

把文件后缀改成php,然后forward。

上传成功,然后在新建标签页打开图像

Pass-2

查看源代码,发现对Content-Type有限制

直接上传文件,然后抓包,发现Content-Type后面是源码里面没有包括的。

把application/octet-stream更改为image/png,然后放行。

成功。

Pass-3

第三关,还是先看一下源代码,看看对哪些东西做了限制,一看,发现做了好多限制,文件后缀名不允许.asp .aspx .php .jsp。

直接上传抓包,把文件后缀名改成phtml。

还按老套路,直接放行然后查看,可这次一看发现一片空白。

百度一下发现是因为不能解析phtml为后缀的文件,找到apache下的httpd.conf文件,在里面添加一条AddType application/x-httpd-php .php .html .phtml语句。

然后保存并重启一下apache。然后。。。。。。

寻思应该是phpstudy版本原因,用虚拟机下一个2018版,然后

Pass-4

还是先查看一下源代码,发现这次禁用的更多了,很显然用第三关的套路是不行了

先上传.htaccess这个文件

这里提示上传的文件类型应为图片类型,所以把phpinfo.php文件后缀改为.png文件。

上传成功访问文件路径

访问成功

Pass-5

第五关依旧是先查看源代码,发现与第四关差不多,仔细一看,少了个转换大小写的语句

把文件名后缀改为大写。

上传,成功

Pass-6

第六题查看源代码发现跟前几关差不多,但是不能换成大写绕过了,但是仔细一看发现少了个首位去空,可以利用

依旧抓包,利用Windows系统的文件名特性。文件名最后增加空格,写成phpinfo.php ,上传后保存在Windows系统上的文件名最后的一个空格会被去掉,实际上保存的文件名就是phpinfo.php。

成功。

Pass-7

第七关,看了一下源代码,发现连加空格都绕不过去了

选择文件,用bp抓包。在.php后面加个. 发现可以绕过。

复制地址。

成功。

Pass-8

查看一下源代码,发现前面几关用的方法都不可用了,仔细一看,这里没有对后缀名中的::$DATA进行过滤。在php+windows的情况下:如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持::$DATA之前的文件名。利用windows特性,可在后缀名中加 ::$DATA绕过。

依旧用bp抓包。这里在.php后面加::$DATA。

放行,发现成功绕过

Pass-9

第九关把::$DATA也禁用掉了,所以这个方法不可以了。

看代码后发现。代码先是去除文件名前后的空格,再去除文件名最后所有的.,再通过strrchar函数来寻找.来确认文件名的后缀,但是最后保存文件的时候没有重命名而使用的原始的文件名,导致可以利用.php. .来绕过。

抓包,在.php后面加(点 空格 点)。

复制地址

成功绕过。

Pass-10

查看源码,发现是黑名单过滤,将黑名单里的后缀名替换为空且只替换一次,因此可以用双写绕过

打开bp抓包,使用双写绕过

成功绕过。

Pass-11

关键的代码在于这里的’save_path’是一个可控的变量,但是后面还拼接上一个后缀名,也需要绕过。这个时候可以使用%00截断。

但是有两个条件: php版本小于5.3.4。

php的magic_quotes_gpc为OFF状态。

上传一个jpg文件

然后使用bp抓包。在upload后面加phpinfo.php%00拦截。

放行,查看返回包,发现文件地址,复制

成功

Pass-12

这里的源代码就改了一点点,就是把get改为post类型,一样的方式绕过,只不过这里需要在二进制里面修改%00,因为post不会像get对%00进行自动解码。

上传图片

继续抓包

这里改为00

放行,查看返回包,发现已经绕过,复制地址

成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值