Pass -01(js检查)
题目基于前端js过滤,只能上传图片格式的文件,所以我们用一句话木马,改后缀上传后,用burp抓包,修改文件后缀为php,然后用蚁剑连接, 注意: 文件没有上传在具体题目中的文件夹中,所以我们在用蚁剑连接的时候,需要注意其地址
Pass -02(只验证Content-type)
根据源代码我们可以发现,这一关是常见验证中的文件类型验证,也就是验证MIME信息 所以这里可以直接上传php文件,然后用burp抓包,修改content-type为图片类型:
image/jpeg、image/png、image/gif
然后蚁剑连接
Pass -03(黑名单绕过)
先上传一个php文件,发现,上传设置了黑名单, 查看源代码:
所以可以通过上传其他可解析文件,.phtml .phps .php5 .pht 前提是apache的httpd.conf中有配置代码
所以我们这里可以上传一个php3, phtml,phps .php5 .pht 文件实现绕过,注意这题当我们上传的时候文件名会变,我们可以在burp的repeater数据包回显中看,然后蚁剑连接
注意: 上传后文件名会发生改变
Pass -04 (.htaccess绕过)
查看源代码会发现其过滤了很多文件格式, 这时,我们可以尝试上传一个.htaccess 配置文件,它将上传图片当作php代码进行解析,首先创建一个.htaccess文件,里面写上代码
SetHandler application/x-httpd-php
然后我们可以直接上传一个改为图片格式的一句话木马,然后用蚁剑直接连接图片名,即可成功
Pass -05(大小写绕过)
与四题不同的是没有将其后缀转换为小写 因此可以使用大小绕过,上传文件后缀为.Php 的文件,然后蚁剑连接即可
Pass -06(空格绕过)
查看源码,对比前面的题,会发现这里没有删除文件首尾的空格,所以可以用空格进行绕过 我们上次文件尝试抓包在文件名后面加一个空格 注意:如果我们是在上传前修改文件名的时候加,上传的时候会被自动去掉,所以我们这里需要抓包,然后添加空格
Pass -07(点绕过)
观察对比前面关卡的源代码,可以发现其没有对点进行过滤,所以上传php文件抓包后在其后缀后面添加一个. ,完成绕过
Pass -08(::$DATA绕过)
观察对比前面关卡的源代码,可以发现其没有对点进行过滤,所以上传php文件抓包后在其后缀后面添加一个::$DATA ,完成绕过
Pass -09(拼接绕过)
查看源代码后,发现它先将后缀名后的. 删除,然后删除空格。 我们可以把文件后缀改成.php. . ,经过代码处理后变成.php. 绕过 上传php文件,然后抓包,改后缀,蚁剑连接
Pass -10(双写绕过)
发现第八行的函数:
$file_name = str_ireplace($deny_ext,"", $file_name);
这个代码的意思就是把带有黑名单中的后缀替换为空。 这时我们考虑双写绕过。如上传的.pphphp 就会变成.php 绕过
总结: 1-10题都可以用.php. . 来绕过
Pass -11(GET型0x00截断)
查看源代码,可以得知是一个白名单,只允许上传jpg,png,gif 格式的文件。但是上传路径是可以控制的,可以使用%00 进行截断。%00只能用于php版本低于5.3的。 利用正常上传后的文件会保存为:/upload/2.php%002.jpg ,文件在读取名字的时候,因为被%00 截断,所以只会读取到%00 就会被截断停止,从而以php 文件执行
Pass -12(POST型0x00截断)
Pass -13(图片马)
分析源代码得: 其利用fread函数 来判断是否是图片 源码意思读取上传文件的前两个字节内容,unpack解码后,使用intval转换为10进制,默认为10进制,根据转换后的结果判断图片类型。
图片马生成:将图片和脚本放在同一目录下,执行cmd命令,在cmd中执行(这里的图片要是真是的图片)
copy /b 图片+php脚本 新文件名
然后上传图片,得到上传后的图片名和地址 注意:图片马是运用文件包含漏洞,通过文件包含漏洞来运行图片中得代码,所以需要一个解析文件,来运行图片马,如图: 解析代码是:
<?php
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
include $file;
}else{
show_source(__file__);
}
?>
其中file 是图片地址,得url是:
http:
当图片马中的代码被解析后,再运用蚁剑连接,其连接url地址就是上面得那个地址
Pass -14(图片马)
利用getimagesize($filename)函数 判断文件是否为图片
Pass -15(图片马)
使用exif_imagetype()函数 判断是否为图片文件
Pass -16(图片马+二次渲染)
验证过程:判断后缀与MIME类型是否符合要求,符合后生成新图像(内容不正确会失败,返回false,相当于多了一次验证),生成新图像失败就unlink删除,成功就根据系统时间给文件命名,再通过imagejpeg类似函数使用原图像资源创建新图像(二次渲染)。相关函数说明:
basename(string $path [,string $suffix])
imagecreatefromjpeg(string $filename)
imagecreatefrompng(string $filename)
imagecreatefromgif(string $filename)
srand([int $seed ])
strval(mixed $var)
imagejpeg(resource $image [,string $filename [,int $quality]])
imagepng(resource $image [,string $filename])
imagegif(resource $image [,string $filename])
先合成一个gif一个图片马,然后上传,抓包得到上传图片的地址,下载上传的图片,对比上传前的图片,找到未改变的地方(很多地方都可以,但我以为这个地方很小,以为要慢慢找,hhh),插入一句话木马后,再次上传这张图片,得到其新的图片名字,然后就跟上一关差不多,解析图片里面的木马,蚁剑连接。 总结:千万不要想当然,用嘴做题,
Pass -17(白名单验证,条件竞争)
这一题在buu上面因为访问过于频繁,后面直接被禁了,自己本地有点不太敢搞,我怕我的系统似乎承受不了,,, 其原理就是利用它会将我们上传的文件短暂的储存在服务器中,然后
Pass -18(白名单验证,图片马)
个人认为这里和13关差不多,只不过这里需要知道上传后图片重命名后土木的名字,然后解析图片马,再用蚁剑连接
Pass -19(黑名单验证,点号绕过)
两种方式绕过: 1.这里会上传文件的名称,我们可以用burp抓包,然后再修改,改为php,然后用%00截断,再加上jpg后缀,完成绕过 2、文件夹的形式,这里会构成upload/xxx.jpg,但如果我们这里修改为upload/upload/xxx.php/. ,我们在上传验证的时候,会以为其文件名为. 但实际上我们上传的文件名确为upload/xxx.php
Pass -20(白名单绕过,图片马)
数组,分析其代码,得到其上传的时候会将图片名分为数组,分别为:文件名 ,. ,后缀 ,在这里我们通过修改其分组,完成上传,将其分组数据修改为:文件名.php/. , ,后缀 ,类似于文件夹上传,验证的时候会正常通过,最终为:文件名.php/.jpg ,但上传后的文件名确为:文件名.php
总结:20到题边看wp,遍做,用了整整一天,怎么说呢!在做题的过程中会遇到很多网上的wp都没提过的问题,比如蚁剑测试连接的时候报错,但保存后却可以正常连接,你敢信?再比如burp抓不到本地的数据包,或者是在改gif图片,对比前后有哪些地方不一样的时候,你以为只是很少的一部分不一样,但其实呢?很容易找出不一样的地方来,emmm,其中还有在本地搭建的时候,要注意php版本的问题,可能现在的php版本不支持,或者其它的设备软件问题,总之在做题的过程中,要学会有自己的思考,要善于运用百度,牢记:纸上得来终觉浅,绝知此事要躬行,还是要多刷题,准备过几天不看wp,自己来个二刷。
|