pass1
上传一个php一句话文件(记得改成php格式)
发现不允许上传php类型的,只能上传jpg,gif,pngl的我们打算用burp抓包,先上传jpg的,然后用burp改成php的。
放包后,找到它的存储位置,用蚁剑连接.
成功连接。
pass2
我们尝试用第一个的方法,发现还是可以直接上传成功,但是这里还有第二种方法。
直接上传php格式的文件,用burp抓包。更改这里的值。
上传php文件时,Content-Type的值是application/octet-stream,
上传jpg文件时,Content-Type的值是image/png,直接更改就可以了用蚁剑连接
成功
pass3
在我们用第一关的方法上传jpg文件改包后发现不行我们猜测应该是吧这几个后缀名放到黑名单了。我们可以上传例如php3, phtml后缀的文件绕过,重复上述操作后,上传成功。用蚁剑连接即可
Pass4
在我们尝试了上述方法之后,发现直接传不行,抓包改成php也不行,改成php3也不行,猜测是吧这些全部放入黑名单了。
这里我们先上传一个.htaccess的文件里面内容为:SetHandler application/x-httpd-php 如图所示这个文件的目的就是把我们上传的文件全部转成.php的。直接上传就可以。上传成功后上传我们的jpg格式的马就可以,然后用蚁剑直接连接这个马。
Pass5
我们用前面的方法尝试之后,发现都不可以,就连.htaccess都进了黑名单。只好查看源码了。
发现第五关比第四关少了一个转小写的代码.我们直接上传.Php的一句话马,发现上传成功.直接用蚁剑连接即可。
pass6
第五关源码
第六关源码
对比两关的源码后发现,第六关少了首尾去空的代码,我们上次文件尝试抓包在文件名后面加一个空格发现上传成功了,直接用蚁剑连接。
pass7
查看提示,发现所有可以被解析的后缀都被禁了
我们查看一下源码进行对比
第六关源码第七关源码通过源码我们发现,第七关少了删除文件名末尾的‘.’
我们抓包后再文件名后加一个‘.’上传成功,用蚁剑连接即可。
pass8
还是用上述方法对比不同,发现第八关对比于前面一关少了去除字符串应该就是抓包在后缀加上:: D A T A 了 在 我 查 询 后 发 现 : p h p 在 w i n d o w 的 时 候 如 果 文 件 名 + " : : DATA了 在我查询后发现:php在window的时候如果文件名+":: DATA了在我查询后发现:php在window的时候如果文件名+"::DATA“会把:: D A T A 之 后 的 数 据 当 成 文 件 流 处 理 , 不 会 检 测 后 缀 名 . 且 保 持 ” : : DATA之后的数据当成文件流处理,不会检测后缀名.且保持”:: DATA之后的数据当成文件流处理,不会检测后缀名.且保持”::DATA"之前的文件名
他的目的就是不检查后缀名
抓包,修改上传成功,用蚁剑连接即可
pass9
我们查看提示后发现,这关把前面的全部拉入了黑名单查看源码分析一下
发现它先将后缀名后的‘.’删除,然后删除空格。
我们可以把文件后缀改成11.php. .,经过代码处理后变成11.php.绕过
上传php文件,然后抓包,改后缀上传成功,用蚁剑连接即可。
pass10
我们查看一下源码发现 f i l en a m e = s t ri r e p l a c e ( file_name = str_ireplace( filename=strireplace(deny_ext,"", $file_name);
这个代码的意思就是把带有黑名单中的后缀替换为空。
这时我们考虑双写绕过。如上传的66.pphphp就会变成66.php绕过
直接上传成功了,用蚁剑连接即可
pass11
在我们尝试上传一个php文件后发现只允许上传jpg,gif这些类型的,所以这一关采用的是白名单过滤的方法,并且将上传文件的后缀名改为白名单里的后缀名这一关上传目录是可控的,所以可以先上传一个后缀名为.php,然后修改上传目录为.php后缀,之后在.php后使用截断后面的拼接内容,用00截断,因为00在url的GET参数中,所以需用进行url编码,最后把文件名后缀改为.jpg发现上传成功,用蚁剑连接即可
pass12
我们直接上传一个php文件,发现和上一关差不多,为白名单过滤。
直接抓包,发现post里面的参数跟上一关一样,加拦截发现不行,因为在post里面%00会被认为是字符串,所以换个方式加,先在php后面加个+,然后文件名改为jpg,再到后面的hex里面加个空格
修改为00后点击应用就修改成功了,发送回浏览器就上传成功啦
pass13
查看提示我们知道,只检查图标内容的前两个字节,所以我们在一句话木马前加上GIF 89A就可以转换成为gif文件了。
直接上传这个文件,发现上传成功,但是是gif格式的这时需要我们写一个include.php传入,来解析图片
这时源码
header(“Content-Type:text/html;charset=utf-8”);
$file = G E T [′ f i l e′ ] ; i f ( i s s e t ( _GET['file']; if(isset( GET[′file′];if(isset(file)){
include $file;
}else{
show_source(file);
}
?>
将它放入upload-labs里面(跟之前建的upload文件夹在同一级别下,后面就知道为啥了)
然后我们来解析gif文件
http://127.0.0.1/upload-labs/upload/include.php?file=upload/文件名
解析时看路径就知道include.php跟upload同级了
解析成功后就可以用蚁剑直接连接了。
pass14
我们查看一下提示
getimagesize()可以将jpg,gif等图片类型的大小并返回尺寸,也是用这个函数来确定图片类型。
其余同pass13.
pass15
我们查看源码后发现有这个函数
exif_imagetype()函数可以获取图片类型
同pass13。
pass16
这一关是二次渲染,我们刚开始上传的图片会被渲染,导致原有的属性被改变,我们首先上传一张gif的图片然后点击右键将它另存到其他地方(这时的图片已经被渲染了)可以用它去制作图片马来进行上传。剩余的同less13。