白名单的绕过处理方法
采用后缀名的绕过方法 如MIME修改、%00截断、0x00截断
白名单绕过 upload-labs-Pass-02 [修改MIME文件类型]
MIME检测并不是检测后缀名,是检测文件类型,虽然不检测后缀名,但是属于白名单机制。
先分析一下 upload-labs-Pass-02 的源码
白名单绕过 upload-labs-Pass-12 [%00截断]
这里有个点要说一下, upload-labs-Pass-12 与 upload-labs-Pass-11 同样都可以使用 %00 截断的方式绕过,区别在于 upload-labs-Pass-11 是通过 $_GET 获取图片存储路径,而 upload-labs-Pass-12 是通过 $_POST 方式获取图片存储路径的。
利用 $_POST 获取图片存储路径时使用的 %00 截断是无法正常解析的需要重新进行URL编码。
[这里有个大坑]
在upload后面加上12.php+(添加+是为了方便改hex值)
通过 burpsuite 修改 hex 值为 00 进行截断。
把 2b(’+'的 hex) 修改成 00
或者直接在upload后面加上12.php%00,然后选中%00实施URL-decode
关于这里的坑需要说一下, %00 截断这个方法仅适用于小于 PHP 5.2.4 的版本,且 php.ini 中 magic_quotes_gpc=off 的状态下才适用。而我从docker上下载的镜像文件的版本是 5.2.17 版本的还是安装在Ubantu系统下,所以11关与12关无法利用 %00 突破。如果是WIN系统环境利用PHP study 安装的绿色版的 upload-labs ,通过降低 PHP版本就可以使用 %00、 0x00 截断的方式突破上传。
upload-labs 官方Git地址 https://github.com/c0ny1/upload-labs
[真尼玛坑]