pass-10 . .绕过(点空格点绕过)
查看源码
这是一个后端黑名单检查
str_ireplace() 的作用是寻找文件名中存在的黑名单字符
上传一个php文件
查看提示
可以把PHP文件后缀名改为可以上传的文件类型
上传成功
pass-11 双写绕过
查看源码
查看提示
提示中说会从文中去除以上那些字符
看代码可以看出来它是将上传文件扩展名包含 $deny_ext中的话变成空扩展名,也就是没有扩展名。
使用了str_ireplace()函数,这个函数他不区分大小写的替换函数
比如上传一个1.phtmhp,在执行完函数后就变成了1.php。因为里面有htm就会替换为空
str_ireplace()的作用是寻找文件名中存在的黑名单字符
我们就上传一个php文件,然后抓包,改一下后缀
上传成功
到浏览器访问一下
pass-12 %00截断绕过(GET)
查看一下源码
查看提示
从源码中看到只允许上传.jpg|.png|.gif类型的文件
上传一个php
代码对上传进行了白名单限制,但也对上传的文件进行了文件名重构
文件截断绕过的检测原理是:
由于00代表结束符,PHP会把00后面的所有字符删除
但是截断的条件是PHP版本小于5.3.4、magic_quotes_gpc为off状态
因为magic_quotes_gpc为ON状态会把所有引号进行转义
绕过方法:
GET方法中绕过加入00截断(在URL里)
POST方法中传入%00并解码(十六进制)
截断的文件被重命名了,并且路径是可控的。
上传文件,抓包
可以看到保存的路径在URL中,改掉原来的文件后缀,并且再URL中加入%00
在url中%00表示ascii码中的0,而0作为特殊字符保留,表示字符结束,也就是说,在保存文件的时候,如果路径参数(例: $img_path)中出现了%00,就会认为路径到这里就已经结束了,从而忽略后面一系列的参数,比如$img_path = ../upload/2.php%00/2.jpg,此时,路径参数的后半部分就会被%00给截断,从而变成$img_path = ../upload/2.php
pass-13 %00截断绕过(POST)
查看源码
只允许上传.jpg|.png|.gif类型文件
和12不同的是这个是post方式
查看源码
上传一个文件,抓包
save_path不在URL中了,在post数据里
所以我们要在这里添加上路径并且加上%00
这里要注意十六进制转码
pass-14 图片马绕过
该关需要上传图片马
什么是图片马?
图片马指的是代码写入后不被破坏图片为前提,图片仍可以正常打开。图片马是web渗透测试时的必备。
所以我们先来制作一个图片马
先准备好图片和asp文件
Win+R——cmd
cd到原始图片的目录路径下
我们就可以得到一个图片马
我们需要做三种后缀的图片马,也是以上步骤
上传tpm.gif,上传成功
在本关页面“文件包含漏洞”几个字上面点一下,可以得到文件包含漏洞所在url和代码,从如下代码可知,图片马可以通过file参数包含。
要上传成功后,被作者提供的包含漏洞包含后能够输出OK即可。
其余后缀名的文件也是如此操作