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]