文件上传-NTFS文件流

[题目信息]:

题目名称题目难度
文件上传-NTFS文件流1

[题目考点]:

NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系
统中的文件的兼容性。备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在
Windows中,此默认数据流称为:$ DATA。上传.php::$DATA绕过。(仅限windows)

[Flag格式]:

SangFor{2_LHZmrVlIN6uJHH0RTGh1JvQjFP2uyO}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

1、实验主页

2、对于上传点的测试思路

3、首先判断是服务端检测还是服务端检测

创建一个.xxx的任意文件;

上传.jpg后缀文件,并使用burp抓包;

通过回显,可以看出文件储存位置和文件名;

1、通过burp修改文件后缀为php,查看是否有上传检测;

通过回显结果可以看出存在后端验证,那接下来的绕过思路可以分为两步;

  1. 确认是白名单验证还是黑名单验证;
  2. 如果是黑名单验证确认服务器是windows系统还是linux系统;
  3. 如果是白名单,在后面题目再进一步分析;

2、上传任意文件后缀,判断是黑名单还是白名单检测;

黑名单验证;简单的理解,黑名单验证即不允许用户上传什么样的文件;白名单验证;即为只允许用户上传什么样的文件;

如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证仅不允许如.php等文件后缀;

通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;

修改文件头为GIF89a,动态GIF图片是一个以GIF89a开头格式存储的文件

xxx文件能够上传成功,则证明服务器后端验证属于黑名单格式;

3、验证服务器操作系统

当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;

验证Windows操作系统还是Linux操作系统可以通过改变url地址的大小写加以区分,Windows操作系统大小写不敏感,Linxu操作系统大小写敏感;

我们将upload.php修改为Upload.php,可以成功访问,因此可以证明服务器操作系统为Windows;

现在已经验证:

  1. 服务器后端为黑名单验证;
  2. 服务器操作系统为Windows;

因此可以利用Windows操作系统NTFS文件系统特性:

NTFS(英语:New Technology File System),是Microsoft公司开发的专用文件系统,从Windows NT 3.1开始成为Windows NT家族的默认文件系统。

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名

例如:"phpinfo.php::$DATA"Windows会自动去掉末尾的::$DATA变成"phpinfo.php"

访问/upload.php,成功上传一句话木马;

查看文件源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值