pass-01 针对JavaScript的处理绕过
上传了一张图片显示不存在
上传一个.php文件
我们用burp抓包一下
什么都没抓到,说明验证合法性是直接在前端进行的,怎么绕过呢?
首先我们先上传一个合法的文件
将原来的.php文件改成.jpg文件(原来的php文件其实是一句话木马)
上传,抓包,欸,这次抓到了,这个包经过了验证
这时候我们把.jpg改成.php
新标签页打开图像
发现打开的是php文件
打开蚁剑后门连接
成功绕过
或者前端禁用JavaScript也可以
pass-02 Content-Type的验证
第二关我们仍然上传一个php文件,发现居然抓到包了,说明文件的验证合法性在后端
上传一个图片
上传成功,那么这个是用什么方法验证合法性呢?
我们抓包,把concent-type删除看一下
这时候文件上传不成功
说明大概率后端的验证是通过concent-type判断的
如此一来,我们就可以把php文件的concent-type后的类型给改成img/png
上传成功
依然是用蚁剑
成功
pass-03 黑名单绕过
首先上传一个php,它提示几种类型不允许上传,可以理解成拉黑了
那我们换成其他后缀就行了,php3,php5,phtml都行
这一关的环境配置有点问题,改一下Apache的配置文件
成功
pass-04 .htaccess文件绕过
还是先上传试一下
php不允许上传,看一下源码,有很多黑名单
没有禁用hatcess配置文件,我们当然可以试一试这个
我们可以直接写一个htaccess的文件
这是将jpg,txt文件类型以php解析
上传它
欸,成功了,那我们就将原来的一句话木马改成jpg上传
好,成功了,那就连接蚁剑吧
完成
知识点:
.htaccess
作用:·分布式配置文件,一般用于 URL·重写、认证、访问控制等
作用范围:特定目录(一般是网站根目录)及其子录
优先级:较高,可覆盖Apache的主要配置文件(httpd-conf)
生效方式:修改后立刻生效
.httpd-conf
作用:包含ApacheHTTP·服务器的全局行为和默认设置
作用范围:整个服务器
优先级:较低
生效方式:管理员权限,重启服务器后生效
pass-05 user.ini绕过
这道题连.htaccess都拉入黑名单了
user.ini
作用:特定于用户或特定日录的配置文件,通常位于· Web·应用程序的根目录下它用于覆盖或追加全局配置文件 (如·php.ini) 中的· PHP配置选项。
作用范围:存放该文件的目录以及其子目录
优先级:较高,可以覆盖 php.inie
生效方式:立即生效
php.ini
作用:存储了对整个·PHP·环境生效的配置选项。它通常位于·PHP·安装目录中
作用范围:所有运行在该PHP·环境中的·PHP·请求
优先级:·较低
生效方式:重启 php或web 服务器
写一个user.ini文件
先上传这个文件
再上传包含的111.jpg
再用蚁剑连接
完成
也可以用点加空格加点绕过
pass-06 大写绕过
这关挺简单的,就是个大小写
同样是抓包,后缀改大写
连接成功
pass-07 空格绕过
对比之前的源码,发现少了一句
$file_ext = trim($file_ext); //首尾去空
所以我们可以用空格绕过
在后缀之后加空格
完成
pass-08 后缀加点绕过
源码中少了删除点,那就可以利用这个
在php后多加一个点就行
成功
做第九关之前得了解一些知识点:额外数据流
在Windows操作系统中,当你看到文件名后跟着”::$DATA"时,它表示文件的一个附加数据流(Alternate:DataStream,ADS)。数据流是一种用于在文件内部存储额外数据的机制。“
在普通情况下,我们使用的文件只有一个默认的数据流,可以通过文件名访问。但是Windows·NT·文件系统(NTFS)支持在文件内部创建额外的数据流,以存储其他信息。这些额外的数据流可以通过在文件名后面添加"::$DATA"来访问。“
例如,"1.txt"是一个文件,而"1.txt.:$DATA"是这个文件的个附加数据流。这样的数据流可以用于存储文件的元数据、备份信息、标签等。“
需要注意的是,大多数常规的文件操作工具不会意识到这些额外的数据流,而只会处理默认的数据流。要访问或操作这些附加数据流,通常需要使用特定的命令行工具或编程接口。“
pass-09 $DATA绕过
这一关的源码相较之前少了一句
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
这个页面是因为我们加了::DATA,既然已经上传了,那我们连接的时候吧它删了就行了
好了,可以了
pass-10 点空格点绕过
在后缀后加. .(实际上在上传的时候只剩‘.’了
完成
pass-11 双写后缀绕过
先看源码
比之前多了一句
$file_name = str_ireplace($deny_ext,"", $file_name);
这是个字符串替换函数,它会把字符串替换成空,也就是后缀,顺序是从左到右,那我们可以在后缀多写一个php
pass-12 %00截断
这一关看源码,是白名单过滤,我们上传抓包改成jpg,然后再用%00截断
这里的php需要5.2.17版,小于5.3都可以
pass-13 0x00截断
这一关和12关差不多,upload的位置有点不同,加个111.php 0x00
做14关前了解的知识点
JPEG/JFIF(常见的照片格式): 头两个字节为·0xFF·OxD8。
PNG (无损压缩格式):头两个字节为·0x89·0x50。
GIF(支持动画的图像格式): 头两个字节·0x47·0x49。
BMP (Windows 位图格式): 头两个字节为·0x420x4D。
TIFF (标签图像文件格式): 头两个字节可以是不同的数值。
pass-14 字节标识绕过
把111.jpg文件的前两个字节改成89和50
这时候再上传显示成功,但还是不能连接蚁剑
题目有一句话
2.使用文件包含漏洞能运行图片马中的恶意代码。点击它
利用这个文件上传漏洞就可以完成
成功
pass-15 图片马绕过
getimagesize0函数返回一个包含图像信息的数组。该数组的索引如下所示:
索引·0:图像的宽度(单位: 像素)
索引·1:图像的高度 (单位: 像素)
索引 2:图像类型的常量值(可以使用·image type to mime type0函数将其转换为·MIME
类型)
索引3:包含图像属性的字符串,以逗号分隔 (如“width=500,height=300”)
如果·getimagesize0函数无法读取图像信息,则返回· false。否则,返回一个包含上述索引的数组。
IMAGETYPE_GIF:代表·GIF图像文件的常量值e
IMAGETYPE JPEG:代表·JPEG·图像文件的常量值e
IMAGETYPE_PNG:代表·PNG·图像文件的常量值4
IMAGETYPE_SWF: 代表 SWF·(ShockwaveFlash)文件的常量值eIMAGETYPE_PSD:代表 Adobe Photoshop的PSD文件的常量值IMAGETYPE_BMP:代表BMP(Bitmap)图像文件的常量值4
我们写一个包含php的图片马
错了错了,得加个后缀png
上传成功了是不是,我们仍然是利用文件包含漏洞
目录copy一下
完成
pass-16 图片马绕过
第16关和第15关是一样的,我这里就不过多赘述了
pass-17 二次渲染绕过
首先我们上传一个gif的图片
在upload中找到它,复制粘贴
对比两个文件的字节码,在相同的地方插入一句话木马
接下来的步骤就和之前一样了,利用文件包含漏洞
pass-18 条件竞争绕过
发送到攻击模块,不断发送请求
好,我们将shell传上去了
然后用蚁剑连接就行了
pass-19 apache解析漏洞+条件竞争
加个.7z
接下来也是不断上传,和上一关一样,我就不多赘述了
pass-20 后缀绕过总结
这一关没有很多的过滤条件,就是简单的绕过就可以了
甚至不用抓包,直接加个空格或者点空格点就可以
连接就可以
pass-21 审计加数组后缀绕过
把Content-Type改了
savename后加[0]
上传成功了,用蚁剑连一下,可以
完结