Pass-05
首先尝试直接上传shell.php,提示此文件类型不允许上传,抓包尝试更改其他后缀名,同样无法上传,查看源码,可见几乎所有的后缀名都被放进了黑名单
尝试添加空格也无法绕过,因此查看了一下wp,wp提示上传文件夹目录有readme.php,找到根目录,发现也没有有用的信息,无法通关,只能搜索攻略了,攻略表示使用.user.ini配置文件可以通过。原理是(转自他人博客):
php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。
但是想要引发 .user.ini 解析漏洞需要三个前提条件
服务器脚本语言为PHP
服务器使用CGI/FastCGI模式
上传目录下要有可执行的php文件
————————————————
版权声明:本文为CSDN博主「晚安這個未知的世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47598409/article/details/115050869
因此我们创建一个.user.ini文件,添加如下内容:
这句话的意思是所有的文件都包含1.jpg这个文件,然后我们上传的1.jpg实际包含了一句话木马
首先上传.user.ini成功,再上传1.jpg,检查元素发现上传的文件位置:
使用蚁剑测试连接,发现不成功,再次查看攻略,发现需要修改php.ini配置文件,否则需要等待300s,我们通过修改php.ini,将时间改为10s,重启phpstudy,发现还是不行可能是不符合三个条件。没有办法了,只能使用文件包含了,测试成功:
隔天之后再次找了一篇博客(upload-labs-21关通关笔记 - 简书 (jianshu.com)),发现
因此切换一下phpstudy版本 ,再次用蚁剑测试连接,连接成功(图片马只能含有一句话木马,而不是我上次尝试的含有一句话木马的图片马)
此外本关还可以使用修改后缀名“. .”进行绕过,上图shell.php,即我使用burp修改后缀名为“shell.php. . ”成功上传的一句话木马。
Pass-06
查看源码,发现对后缀名进行了大量的限制,但是发现大小写限制没有了,因此使用.pHP来绕过
可以发现上传成功,测试(同上)便不做了,因为上传一句话木马已经成功了
Pass-07
查看源码,同样是黑名单限制,这次把大小写限制进来了,我们尝试在文件后面添加空格(我也不知道为什么用空格,因为绕过方式就是那么几种嘿嘿)
上传成功,直接下一关
Pass-08
这关又把空格限制了,但是没有deldot()(删除文件末尾的"."的作用),因此就在文件末尾添加.绕过
上传成功,直接下一关
Pass-09
查看源码,发现前面几关一直有的,我不懂的::$DATA没有了,因此我猜测本关应该是靠这个绕过;查阅资料: php在window的时候如果 “ 文件名 + "::$DATA" ”会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 他的目的就是不检查后缀名。(此方法仅适用于windows操作系统)
因此我们尝试在文件名后添加::$DATA,查看burp,上传成功:
再查看upload文件夹,可以看到上传的文件是正常的.php
所以,直接下一关!
Pass-10
查看源码,这次又将::$DATA限制回来了,且之前的限制都汇集在一起了,但是这关可以应用Pass-05和Pass-08所用到的,". 空格 ." 的方法进行绕过,这里的原理是:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来,因此方法同理Pass-05的方法二,这里便不做测试了。
Pass-11
这关我按照惯例先试试上传一句话木马的时候,发现居然上传成功了,但是检查发现,后缀名php消失了,“.”还在,查看源码,发现是这个函数没见过
这个函数的意思是寻找文件名中存在的黑名单字符串,将它替换成空(即将它删掉),因此我尝试双写php为phphpp,发现上传的后缀名有了,但是不是php,可能是构造得不对,尝试pphphp(不太懂双写绕过的规则),成功上传
小结:
除第五关通过配置文件进行解析上传,其余的绕过方法大多都是以下方式或几种方式混合:
- 大小写
- 空格
- "."
- 复写(双写)
- 删除后缀名(::$DATA)
以上可以统称为黑名单限制。