UNCTF杂项题Hidden secret 之NTFS交换数据流隐写
---恢复内容开始---
做这道题目的经历比较坎坷,题目中用于隐藏flag的jpg文件出了问题,导致不能被交换数据流隐写所以出题人换了一次题目,最后做法也换了,不过出题人一开始的考察点还是基于NTFS交换数据流隐写。
0x1.什么是NTFS数据交换流(ADS)
NTFS交换数据流(Alternate Data Streams,简称ADS)是NTFS磁盘格式的一个特性。在NTFS文件系统下,每个文件都可以存在多个数据流,意思是除了主文件流之外还可以有许多非主文件流寄宿在主文件流中,这些利用NTFS数据流寄宿并隐藏在系统中的非主文件流我们称之为ADS流文件。虽然我们无法看到ADS流文件,但它们却是真实存在。下面通过一个实例来具体展现ADS流文件的创建、关联及隐藏过程。这一段是百科上面的内容。
2) 创建数据流文件并关联宿主文件,在DOS窗口中输入“echo This is an ADS > 1.txt:ads.txt”后回车。该命令的含义为:创建一个名为ads.txt内容为“This is an ADS”的数据流文件与宿主文件1.txt进行关联。此时回到C盘根目录下查看,只有1.txt并无ads.txt,打开1.txt查看起内容仍为“This is a test file”也未做任何改变,那么数据流文件ads.txt到底到哪去了呢?“dir”命令也无法查看到。这时,在DOS窗口中输入“notepad 1.txt:ads.txt”,在弹出的记事本中就可以看到ads.txt中的内容。

type命令是将已经存在的一个文件,用交换数据流的方式寄生到另外一个文件夹上.
/*寄生到1.jpg上*/
E:\>type .txt >>.jpg:.txt /*寄生到113文件夹上*/
E:\>type .jpg >>:.jpg /*寄生到a.exe这个可执行文件上上*/
E:\>type .jpg >>a.exe:.jpg /*寄生到E盘根目录*/
E:\>type .jpg>>E:\:.jpg
0x2.利用NTFS交换数据流隐藏可执行文件
winXP中可以直接运行寄生的可执行程序,Win7之后的版本需要手动创建一个连接文件,通过这个链接文件才能运行这个寄生的可执行交换数据流文件
winXP实例
type a.exe>>1.txt:a.exe
XP中可以直接通过start命令使用绝对路径来调用这个寄生的可执行文件
start 绝对路径 1.txt:a.exe
0x3.检测和清楚NTFS交换数据流隐藏文件
1.之前使用cmd命令notepad可以查看隐藏的txt文件,也可已使用Ntfs Streams Editor这个软件查看 https://files.cnblogs.com/files/rainbow7/ntfsstreamseditor.zip
做CTF时使用这个软件很方便

2.使用lads,将lads放在需要检查的目录下工具地址: https://files.cnblogs.com/files/rainbow7/lads.zip
lads.exe /S
/*检测根目录下的隐藏流文件*/
3.清除ADS 使用streams.exe这个软件清除 https://files.cnblogs.com/files/rainbow7/streams.zip
streams.exe -d <File>
可以添加-s参数来一次性递归清除E盘下所有寄生的交换数据流文件(慎用,尤其是对系统盘一定不要随便使用递归清除,系统本身的一些数据流也会被一起清除掉)*/
E:\0x4.做题步骤:
题目给了三个十六进制内容的文件打开如下图,三个文件开头分别是03 04, 01 02, 05 06,这让我马上想起了zip压缩包的三个组成部分,压缩源文件数据区,压缩源文件目录区。压缩源文件目录结束标志,只不过每个文件都缺少一个50 4B的标记。手工给加上就行了。

使用010Editor把三个十进制文件拼起来,然后保存为.zip文件。
将文件解压出来有一个2.txt和一个1.jpg文件2.txt内容为:1.txt behind 1.jpg 1.txt隐藏在在1.jpg后面,使用binwalk跑不出来提示就是一张单纯的图片,查看十六进制也是一个
jpg文件尾部结束没有问题,之后根据提示NTFS我才找到NTFS交换数据流隐写的方法。
特别注意:如果文件原本是在压缩包内的,这时使用除WinRAR以外的软件进行提取会造成数据流丢失。所以务必使用WinRar进行文件解压
当我重新将zip文件使用win解压,然后用Ntfs Streams Editor这个软件查看但是没有找到我要的结果,后来找到出题人问了一下才知道题目坏了,我去
但是最后题目没改成功,然后换了一个题,换了一种做法变得更简单。下面我自己将数据流添加进去 type 1.txt>>2.jpg:1.txt,然后当作一切都没发生。
两种不同做法:


这篇文章主要写我解题的学习过程,关于NTFS交换数据流的知识还请去百度搜索学习,如内容存在错误还请斧正。
---恢复内容结束---
UNCTF杂项题Hidden secret 之NTFS交换数据流隐写的更多相关文章
- NTFS交换数据流隐写的应用
by Chesky ##目录 ####一.NTFS交换数据流(ADS)简介 ####二.ADS应用 写入隐藏文件(文本\图像\可执行文件) ADS在Windows平台下的利用--写入后门 ADS在We ...
- 利用NTFS交换数据流隐藏文件
利用NTFS交换数据流隐藏文件 发表于 2012 年 12 月 15 日 由 晴刃 这篇文章介绍一下Windows的NTFS文件系统的ADS(alternate data streams,交换数据流) ...
- NTFS系统的ADS交换数据流
VC++ 基于NTFS的数据流创建与检测 What are Alternate Streams?(交换数据流) NTFS alternate streams , 或者叫streams,或者叫ADS(w ...
- NTFS的交换数据流ADS应用
NTFS的交换数据流ADS应用 NTFS是Windows常用的文件系统格式.该格式支持交换数据流(Alternate Data Streams,缩写ADS)特性.该特性可以让多个文件流使用同一个文 ...
- [GXYCTF2019] MISC杂项题
buuoj复现 1,佛系青年 下载了之后是一个加密的txt文件和一张图片 分析图片无果,很讨厌这种脑洞题,MISC应该给一点正常的线索加部分脑洞而不是出干扰信息来故意让选手走错方向,当时比赛做这道题的 ...
- CTF杂项之音频隐写
题目来自bugku 二话不说,直接上图 由题目可以看出,这题需要用到一个KEY,加上又是一段音频,很容易联想到一个著名的音频隐写解密软件Mp3stego 直接上工具 ok,成功Get Flag
- Bugku CTF练习题---杂项---隐写3
Bugku CTF练习题---杂项---隐写3 flag:flag{He1l0_d4_ba1} 解题步骤: 1.观察题目,下载附件 2.打开图片,发现是一张大白,仔细观察一下总感觉少了点东西,这张图好 ...
- bzoj千题计划240:bzoj3900: 交换茸角
http://www.lydsy.com/JudgeOnline/problem.php?id=3900 dp[i]表示让状态为i的鹿满足要求的最少交换次数 不能枚举两头鹿交换,因为一头鹿可能交换多次 ...
- Leetcode题库——24.两两交换链表中的节点
@author: ZZQ @software: PyCharm @file: swapPairs.py @time: 2018/10/20 19:49 说明:给定一个链表,两两交换其中相邻的节点,并返 ...
随机推荐
- 使用PrepareStatement
包结构: 第一步:编写获取连接工具类 package com.atguigu.jdbc; import java.io.IOException; import java.io.InputStream; ...
- 02:H.264学习笔记
H.264组成 1.网络提取层 (Network Abstraction Layer,NAL) 2.视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 ...
- 编写优雅代码,从挖掉恶心的if/else 开始
背景 长话短说, 作为开发人员经常需要根据条件灵活查询数据库,不管你是用rawsql 还是EFCore, 以下类似伪代码大家都可能遇到: /// <summary> /// 灵活查询 能耗 ...
- [VB.NET Tips]对多行文本的支持
从Visual Studio 2008开始VB.NET支持多行文本. 用法如下: Dim mString As String = <string>我是 一个多 行文本.</strin ...
- 夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 ...
- SpringBootSecurity学习(03)网页版登录添加自定义登录页面
自定义登录页面 前面无论是使用默认配置,还是自定义配置类,都是使用的springboot-security自带的登录页面,自带的登录页面在这个版本虽然设计的非常不错,但是在实际开发中,我们通常还是使用 ...
- 从壹开始学习NetCore 45 ║ 终于解决了事务问题
一.项目说明 哈喽,又来写文章了,原来放假可以这么爽,可以学习和分享,
- mybatis 启用延迟加载和按需加载配置
启用延迟加载和按需加载 Mybatis配置文件中通过两个属性lazyLoadingEnabled和aggressiveLazyLoading来控制延迟加载和按需加载. lazyLoadingEnabl ...
- gym101666题解
A Amsterdam Distance 题意 求圆环上的两点距离. 分析 显然是沿半径方向走到内圈再走圆弧最短. 代码 #include <bits/stdc++.h> using na ...
- .Net Core 商城微服务项目系列(九):使用Jenkins构建自动发布
1.首先通过Docker运行Consul,并保证各个服务都成功注册: 然后运行jenkins,对MI.Web项目进行发布构建,至于怎么配置之前已经写过了,和上一篇一模一样,这里贴下批处理命令: cd ...

