概述
目录
- Pass06(黑名单之大小写绕过)
- Pass07(黑名单之空格绕过)
- Pass08(黑名单之点绕过)
- Pass09(黑名单之::$DATA绕过)
- Pass10(黑名单之点空格绕过)
Pass06(黑名单之大小写绕过)
上传1.php失败
继续代码审计
发现本关的代码与之前的代码少了strtolower函数,所以我们可以通过使用大小写的方式进行绕过,因为windows系统是不区分大小写的,但如果是linux系统的话就不能使用这个方法。
在服务端我们也能看到我们确实把文件上传上去了,并且类型也是PHP文件
但是我在进行解析时缺无法正常解析,弹出状态码500服务器错误
特别注意,我的环境apache 2.4.39的时候连接失败,Response报文状态码500,用nginx 1.15.11是可以成功的
Pass07(黑名单之空格绕过)
上传1.php失败
继续代码审计
发现本关又在之前关卡中少了
$file_ext = trim($file_ext); //首尾去空
的代码
所以本关我们可以用空格绕过,这些都是windows的一些小特性
服务端成功上传
上传代码正常解析
注:环境测试需使用低版本5.0,使用7.0版本会提示上传出错
Pass08(黑名单之点绕过)
上传1.php失败
进行代码审计
发现与之前代码少了一行
$file_name = deldot($file_name);//删除文件名末尾的点
所以本关可以使用在文件名后缀添加点的方式来绕过,因为windows会自动解析为php
如图所示代码成功上传
上传代码正常解析
Pass09(黑名单之::$DATA绕过)
上传1.php
进行代码审计
本关又在之前关卡的基础上删除了下面这行代码
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
所以本关可以使用::$DATA绕过
成功上传到服务端
直接访问会弹出403状态码
直接把后缀删掉保留php就可以正常解析了
Pass10(黑名单之点空格绕过)
上传1.php文件
查看代码进行代码审计
首先trim()删除文件名末尾的多个空格,然后deldot()删除文件名末尾的多个点,strrchr()以第一个.为界取出后缀,strtolower()将后缀转化为小写,str_ireplace()去掉后缀中的一个::$DATA,最后trim()删除后缀末尾的多个空格。处理完的后缀与黑名单对比,如果后缀不在黑名单中,则上传后的文件名是去掉文件名末尾的空格,再去掉文件名末尾的点之后的文件名。
按照这个顺序倒推,就可以发现后缀.php. .(点空格点)是可以绕过黑名单检查的。
成功上传到服务端
代码正常解析
最后
以上就是幽默吐司为你收集整理的upload-labs通关(Pass06-Pass10)Pass06(黑名单之大小写绕过)Pass07(黑名单之空格绕过)Pass08(黑名单之点绕过)Pass09(黑名单之::$DATA绕过)Pass10(黑名单之点空格绕过)的全部内容,希望文章能够帮你解决upload-labs通关(Pass06-Pass10)Pass06(黑名单之大小写绕过)Pass07(黑名单之空格绕过)Pass08(黑名单之点绕过)Pass09(黑名单之::$DATA绕过)Pass10(黑名单之点空格绕过)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复