pass-01
本关是JS前端校验
方法1
F12禁用JS可直接上传PHP一句话木马
方法2
查看页面源代码,拷贝下来改为html格式,将.php加入白名单列表中,或者删除JS校验代码,然后在上传的form中写action,action的值为文件上传的位置(点击上传后通过F12网络模块查看,http://127.0.0.1:201/Pass-1/index.html),然后在浏览器中打开这个html文件然后上传php马就好了
方法3
还有一个方法就是先将php马改为jpg后缀正常上传,然后抓包拦截,再将后缀改为php就可以了
pass-02
本关是MIME文件类型检查
方法1
Burp抓包然后更改Content-Type为image/png,image/jpeg或image/gif即可上传成功
pass-03
本关属于黑名单过滤
黑名单中的匹配类型为:.asp|.aspx|.php|.jsp
方法1
考虑php后加数字绕过,使用php5,php7后缀直接上传可以绕过黑名单检测
pass-04
本关使用了更加严格的黑名单过滤,把几乎所有的黑名单绕过方式都考虑到了,所以考虑结合文件包含
广义上,文件包含和文件上传打组合拳考虑.user.ini和.htaccess两种,但是 .user.ini的使用条件是目标文件夹中有一个php文件,所以这里先使用.htaccess
.htaccess的作用是将png后缀的文件当作脚本文件解释
所以先上传一个1.png,然后上传.htaccess,内容为:AddType application/x-httpd-php .png
上传这两个文件,就可以了
pass-05
本关可以知道上传的目标文件夹里有一个readme.php这个脚本文件,所以可以使用.user.ini的文件包含
.user.ini的内容为:
GIF89?
auth_prepend_file=shell.jpg
然后上传shell.jpg
然后访问readme.php,就会自动包含shell中的木马代码,从而实现攻击
pass-06
Php未过滤,可绕过
pass-07
空格未过滤,可绕过
pass-08
.未过滤,可绕过
pass-09
尝试双写绕过,失败
查看源代码,发现没有将违规后缀删除的函数
::$DATA绕过
pass-10
一系列检查函数的步骤是:
先去最后的.
然后去空格
所以可以使用“点+空格+点”的方式进行绕过(这个思路和SQL注入的绕过引号思路差不多)
pass-11
双写绕过
“pphphp”
pass-12
%00截断绕过
pass-13
和上关的区别是:接收上传文件名的类型从GET变为了POST,由于POST不能像GET那样自动解码%00,所以我们用0x00截断,即在Hex数据中进行00截断
pass-14-16
这三关都是上传图片马的,不同点在于使用的判断函数不同
图片马生成的方法
1,在脚本文件前面加上GIF89a文件头
2,copy 1.png/b + 1.php/a 1.jpg(将php中的代码添加到1.png里面,然后生成一个新的图片1.jpg)
3,还有一种是在网上看到的,大概方法就是在脚本文件前面加上各种类型图片的Hex标识,但是我没有操作成功,怀疑是步骤不对或者PHP版本过高
pass-17
这关综合了文件名,MIME,文件头检测和二次渲染
主要考虑二次渲染
二次渲染的解决方案是将上传成功的图片下载下来,放在010editor内与原始图片进行比较,在二者重合的位置写马,这样就不会被渲染掉了
另外图片马的利用方式一般是结合文件包含或者中间件漏洞,如果目标站点有include.php的话,那么可以这样利用:xxx.xx.xx/../include/include.php?page=../upload/1u.gif
pass-18
条件竞争