Upload-Labs回顾上篇(1-10节)
第一关:前段校验
①:可以尝试修改about:config配置,将JavaScript设置为False,直接上传.php文件了。
②:或者先上传允许的文件,再抓包删除标记的.jpg,然后forward即可。核心就是绕过前段验证即可。貌似00截断也可以。
第二关:content type绕过
替换标记的content type 类型为image/jpeg即可上传成功,源码里提示是image/jpeg。
第三关:文件扩展名绕过
源码中有黑名单限制,可以通过其他扩展名上传,比如说php2,php3,php5,phtml等。其中遇到了apache无法解析php3的情况,经研究后发现需要在httpd.conf文件中配置服务器解析的文件类型,虽然最后勉强能够解析,但我总感觉哪里不对。php类型的文件直接就执行了,也没添加解析类型。其实用第四关方法也能绕过。还有一种方法是重定向来进行文件重写,操作很新奇。参考链接:https://www.cnblogs.com/cute-puli/p/10921922.html
感觉这里配置不是很正确。
第四关:.htaccess利用
.htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。简单的说就是能够利用其改变配置的特性把jpg图片当做php解析。
这里注意.htaccess不需要文件名,如果设置了,解析不成功的。
第五关:大小写绕过
查看源码发现黑名单过滤大部分文件后缀了。但没统一转化为小写,可以使用大小写绕过。
第六关:空格绕过
相比于上一关,少了去除空格的代码 $file_ext = trim($file_ext); //首尾去空
,利用末尾加空格绕过黑名单限制。
第七关:点绕过
比较源码发现缺少去除文件末尾的点的代码:$file_name = deldot($file_name);//删除文件名末尾的点
,可以再末尾加点,绕过黑名单限制,而Windows自带去除末尾点的特性,又还原成正常文件扩展。
第八关:NTFS文件流绕过
利用缺少代码 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
来进行绕过。上传文件后抓包添加后缀::$DATA
即可绕过。具体参考:https://www.jianshu.com/p/b1a130902b4e
。
第九关:点+空格+点绕过
类似构造一个空文件名加在后面,源码把空的文件名删了,就剩下正常的文件。第十关:双写绕过
源码要替换黑名单为空。所构造pphphp为后缀的文件名即可。
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。