upload-labs-master 文件上传 第十一和十二关

Posted +d0921

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了upload-labs-master 文件上传 第十一和十二关相关的知识,希望对你有一定的参考价值。

继续!

第十一关(pass-11)

上源码!

 大家可以看到这里有个str_ireplace()函数,详情可以自行百度,简单来说就是把黑名单里的内容给置换为""。注意这里不是空格!就是空!!就是什么都没有。我们先上传测试一下,方便大家理解。

我们直接复制图片地址,当然也可以看一下上传目录来判断。

发现后缀没了,那是因为原本的 .php被str_ireplace()函数变为空了

这里我们发现他的防护规则写的的确生效了,但是有个致命的问题,和前面的关卡一样,没有写循环!他只置空一次匹配到的字符。我们根据这个原理采用"双写"的方法,就是写两次php

按照正常的思路来构造就是

.phpphp

.pphphp

.phphpp

我们对这3个payload进行测试发现只有一种成功了。那就是第二个 .pphphp

那么为什么其他两个payload不行呢,原因很简单,我们不看源代码其实通过观察第三个payload的结果就知道

他是从左到右开始检索后缀名的 导致第三个payload .phphpp 直接匹配到第一个php

也就是说从左到右先检测到了蓝色部分 .phphpp直接置空所以后缀就变成了.hpp

那第一个为什么不行很简单啦,从左到右检索到php都删除。

通关!

第十二关(pass-12)

先说明一下这关通过有环境限制,首先php版本小于5.3.4;php的magic_quotes_gpc为OFF状态)

php版本可以这样修改

magic_quotes_gpc就是俗称的魔术引号(前面的对钩取消掉就可以了)

环境OK了 继续! 

上源码!

真正意义上的白名单出现啦!

这关就是用白名单进行防护的。 这关的绕过方法思路比较特别,其实白名单的安全性是很高的,这关是在请求url上做文章,采用%00截断。

我们先制作一个图片马,准备一个php文件和正常的图片文件(放在同一个文件夹或位置)。

制作图片马有两种方式:

      第一种:用cmd命令:先进入两个文件所在的位置我是放在桌面的。

      命令 copy xiugou.jpg/a + xx.php/b 2.jpg

  然后会发现新的 2.jpg已经生成啦

 这就是生成后的2.jpg用文本编辑器打开的样子。所以第二种方法也很明显啦,那就是直接把图片用文本编辑器打开,在文件末尾加上php代码

图片马构造成功后,我们进行测试,我们先抓个包。

 我们发现他的值是通过请求url来传输的,我们构造payload。

POST /upload-labs-master/Pass-12/index.php?save_path=../upload/11.php%00

上传成功!我们复制图片链接再打开。

http://127.0.0.1/upload-labs-master/upload/11.php%EF%BF%BD/7720210825092924.jpg

原理

当我们看到图片链接的时候相信大家已经或多或少明白了,payload构造的就是这个效果,为什么叫%00截断,因为上传后他的值会自动拼接上后面的 2.jpg 就变成了这样 11.php%002.jpg 当防护端检测的时候,发现后缀是2.jpg,于是就没有进行拦截,11.php后面的%002.jpg因为%00就都不生效,所以最后上传上去的就是11.php,为什么后面是7720210825092924.jpg而不是2.jpg是因为源代码有些随机文件名的规则。我们进行检测的时候直接访问这个地址,把php后面的都去掉:http://127.0.0.1/upload-labs-master/upload/11.php

以上是关于upload-labs-master 文件上传 第十一和十二关的主要内容,如果未能解决你的问题,请参考以下文章

upload-labs-master文件上传漏洞靶场详解(1-17)

文件上传 [upload-labs-master][Pass1-10]

upload-labs-master 文件上传 第十一和十二关

upload_labs_Pass3

Upload_Labs_pass_4

腾讯Wiz课程第三讲,文件上传漏洞的分析