pass-1
通过弹窗可推断此关卡的语言大概率为js,因此得出两种解决办法
方法一
浏览器禁用js
关闭后就逃出了js的验证就可以正常php文件
上传成功后打开图片链接根据你写的一句话木马执行它,我这里采用phpinfo()
方法二
在控制台找到此语句
将蓝色部分删除即可
pass-2
通过提示可知他是在服务端进行检查
通过查看源码可以看出能上传的文件类型为image/jpeg
通过burp suite进行抓包
修改文件类型
上传成功
pass-3
查看提示和代码发现他是使用黑名单禁止文件上传类型的
这里我们直接使用将文件类型改为php2 php3 php5 php7 phtml 等绕过
PHP5文件实际上就是.PHP文件,只不过代码由PHP5引擎解析。
PHP5是一种PHP版本间的区分,该后缀名并不常见,另外还有.PHP2、.PHP3和.PHP4文件。
我这里不解析php3 5 文件这里不演示了,但是使用php3 5 是可以成功绕过的
pass-4
首先查看提示,本关继续使用黑名单,禁止下列文件格式:
限制特别多,但是我们可以想到一种更奇特的方法(即.htaccss文件):
常见配法
.htaccess文件内容如下
<FilesMatch "4.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
查看作用后,发现这句话的作用是将该目录所有文件均映射为php文件类型,所以我们先上传.htaccess文件,随后再上传我们的jpg文件(jpg文件要和.hataccess文件在同一个目录下),查看后我们发现uploads已经被传上去。
pass-5
这里看源码
这里没有转换小写因此将文件类型改为大写就行
pass-6
通过查看代码发现这里并没有首尾去空因此很简单加空格就行
windows下.和空格会被自动去掉因此用burp进行更改
上传成功
pass-7
通过查看代码可以看出没有去点
因此这里还是用burp抓包改包
上传成功
pass-8
查看源码
这里没有进行过滤data字符因此这里也是抓包改包
上传成功
pass-9
查看代码发现这里几乎过滤了所有的空格点data字符等
所以这里我们不能再只绕过一次了,通过代码执行顺序我们可以先过滤掉点再过滤空格
所以这里老办法抓包改包
pass-10
这里查看代码关键代码如下
发现依旧是用上传的文件名来拼接路径并保存文件 没有对文件重命名
只是用了str_ireplace()函数来检测(此函数无视大小写) 如果文件名含有黑名单里面的字符串 就替换为空
但是只替换一次 并没有进行正则匹配或者是循环匹配敏感字符 因此只要双写php即可 因为是从左往右读的 所以替换为空后 还是php
pphphp、phphpp都可以尝试
上传成功