目录
Less-1(JS前端验证)
Less-2(MIME验证)
Less-3(黑名单,特殊过滤)
Less-4(黑名单验证,.htaccess)
Less-5(黑名单,点空格点绕过)
Less-6(黑名单,大小写绕过)
Less-7(黑名单,空格绕过)
Less-8(黑名单,点绕过)
Less-9(黑名单,::$DATA)
Less-10(黑名单,点空格点绕过)
Less-11(黑名单,双写绕过)
Less-12-13(白名单,%00截断)
Less-14(图片马绕过unpack)
Less-15(图片马getimagesize)
Less-16(图片马exif_imagetype)
Less-17(二次渲染)
Less-18(条件竞争)
Less-19(条件竞争)
Less-20(图片马,move_uploaded_file)
第一种解法:
第二种解法:
第三种解法:
Less-21
Less-1(JS前端验证)
在前端页面按F12禁用JS
或者删除checkFile()
或者使用burp将 1.jpg 改为 1.php
Less-2(MIME验证)
在这两处修改,1.jpg 改为 1.php
再将内容类型Content-Type改为 image/jpeg、image/png、image/jpg
Less-3(黑名单,特殊过滤)
将 1.php 后缀改为 php2、php3、php5、php7、phtml等绕过(需要php5.3版本)
Less-4(黑名单验证,.htaccess)
相关知识:
.htaccess文件是Apache服务中的一个配置文件,它负责相关目录下的网页配置。
SetHandler application/x-httpd-php 意思是当前目录下,所有文件都以php进行解析
将.htaccess上传之后再随便上传一个带木马的文件即可
或者使用Apache解析漏洞,使用后缀名为.php.aaa.bbb上传
解析时从后往前 .bbb .aaa 不认识 到 .php 开始解析
Less-5(黑名单,点空格点绕过)
使用burp将后缀名后面加上点空格点绕过
Less-6(黑名单,大小写绕过)
源代码过滤了pHp,没有过滤Php、phP等,大小写绕过
Less-7(黑名单,空格绕过)
windows系统搭建的有该漏洞,windows解析时自动去除末尾的空格
在文件后缀名后加上空格即可绕过
Less-8(黑名单,点绕过)
源代码没有过滤点,在末尾加上.即可绕过
Less-9(黑名单,::$DATA)
相关知识:
在window中如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名
末尾加上::$DATA绕过即可
Less-10(黑名单,点空格点绕过)
补充知识:
deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来
后缀加上点空格点绕过即可
Less-11(黑名单,双写绕过)
补充知识:
str_ireplace(find,replace,string,count) 函数替换字符串中的一些字符(不区分大小写)
后缀名使用双写绕过
Less-12-13(白名单,%00截断)
%00截断的限制条件是PHP<5.3.29,且GPC关闭
因为当 magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的转义字符。
在POST请求头HTTP之前加上1.php%00进行截断,下面文件为白名单格式(1.png、1.jpg)
Less-14(图片马绕过unpack)
补充知识:
unpack是二进制解包,前两个字节解包分为两个包,然后合并结合switch判断
使用生成的图片马上传即可
Less-15(图片马getimagesize)
补充知识:
getimagesize用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE
与14关相同,上传图片马即可绕过
Less-16(图片马exif_imagetype)
补充知识:
开启模块之后,做法与14关相同
Less-17(二次渲染)
补充知识:
imagejpeg — 输出图象到浏览器或文件。
使用php版本(PHP 4, PHP 5, PHP 7, PHP 8)
上传一张图片马,创建一张画布,重新绘画进行二次渲染
上传成功之后下载下来使用winhex二进制查看
与原来的图片进行对比,在没有改动的地方插入木马
将插入木马的图片再次上传即可
Less-18(条件竞争)
使用木马脚本
上传脚本,在没有被删除之前执行脚本
python代码
使用burp配合python,上传到burp拦截,然后使用burp进行爆破
python先开启,一直访问这个url,当执行代码没来得及删除的时候python访问到,执行代码
执行之后会写入一个shelltest.php文件,如下所示
执行shelltest.php文件即可
Less-19(条件竞争)
文件名改为白名单,条件竞争在改名之前访问到url生成木马,与18关相同
python代码有所更改
也可以使用非预期解,直接上传图片马,文件包含
Less-20(图片马,move_uploaded_file)
第一种解法:
补充知识:
本关用move_uploaded_file函数执行上传动作,该函数会忽略文件末尾的 ' /. '
因此可以在文件名后加/.这两个符号来绕过黑名单的限制。
使用burp抓包,在高亮处加上/.即可绕过
第二种解法:
上传图片马,文件包含
第三种解法:
直接上传文件,大小写绕过
Less-21
本关请参考另一篇博客
upload-labs 21关解析-CSDN博客