---恢复内容开始---

做这道题目的经历比较坎坷,题目中用于隐藏flag的jpg文件出了问题,导致不能被交换数据流隐写所以出题人换了一次题目,最后做法也换了,不过出题人一开始的考察点还是基于NTFS交换数据流隐写。

0x1.什么是NTFS数据交换流(ADS)

NTFS交换数据流(Alternate Data Streams,简称ADS)是NTFS磁盘格式的一个特性。在NTFS文件系统下,每个文件都可以存在多个数据流,意思是除了主文件流之外还可以有许多非主文件流寄宿在主文件流中,这些利用NTFS数据流寄宿并隐藏在系统中的非主文件流我们称之为ADS流文件。虽然我们无法看到ADS流文件,但它们却是真实存在。下面通过一个实例来具体展现ADS流文件的创建、关联及隐藏过程。这一段是百科上面的内容。

1)创建名为“1.txt”的宿主文件

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盘下所有寄生的交换数据流文件(慎用,尤其是对系统盘一定不要随便使用递归清除,系统本身的一些数据流也会被一起清除掉)*/
  stream.exe -s -d 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交换数据流隐写的更多相关文章

  1. NTFS交换数据流隐写的应用

    by Chesky ##目录 ####一.NTFS交换数据流(ADS)简介 ####二.ADS应用 写入隐藏文件(文本\图像\可执行文件) ADS在Windows平台下的利用--写入后门 ADS在We ...

  2. 利用NTFS交换数据流隐藏文件

    利用NTFS交换数据流隐藏文件 发表于 2012 年 12 月 15 日 由 晴刃 这篇文章介绍一下Windows的NTFS文件系统的ADS(alternate data streams,交换数据流) ...

  3. NTFS系统的ADS交换数据流

    VC++ 基于NTFS的数据流创建与检测 What are Alternate Streams?(交换数据流) NTFS alternate streams , 或者叫streams,或者叫ADS(w ...

  4. NTFS的交换数据流ADS应用

    NTFS的交换数据流ADS应用   NTFS是Windows常用的文件系统格式.该格式支持交换数据流(Alternate Data Streams,缩写ADS)特性.该特性可以让多个文件流使用同一个文 ...

  5. [GXYCTF2019] MISC杂项题

    buuoj复现 1,佛系青年 下载了之后是一个加密的txt文件和一张图片 分析图片无果,很讨厌这种脑洞题,MISC应该给一点正常的线索加部分脑洞而不是出干扰信息来故意让选手走错方向,当时比赛做这道题的 ...

  6. CTF杂项之音频隐写

    题目来自bugku 二话不说,直接上图 由题目可以看出,这题需要用到一个KEY,加上又是一段音频,很容易联想到一个著名的音频隐写解密软件Mp3stego 直接上工具 ok,成功Get Flag

  7. Bugku CTF练习题---杂项---隐写3

    Bugku CTF练习题---杂项---隐写3 flag:flag{He1l0_d4_ba1} 解题步骤: 1.观察题目,下载附件 2.打开图片,发现是一张大白,仔细观察一下总感觉少了点东西,这张图好 ...

  8. bzoj千题计划240:bzoj3900: 交换茸角

    http://www.lydsy.com/JudgeOnline/problem.php?id=3900 dp[i]表示让状态为i的鹿满足要求的最少交换次数 不能枚举两头鹿交换,因为一头鹿可能交换多次 ...

  9. Leetcode题库——24.两两交换链表中的节点

    @author: ZZQ @software: PyCharm @file: swapPairs.py @time: 2018/10/20 19:49 说明:给定一个链表,两两交换其中相邻的节点,并返 ...

随机推荐

  1. 基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理

    说明: .NET Core版本为:2.2 AdminLTE版本为:2.4.18 Bootstrap版本为:3.4.1 font-awesome版本为:4.7.0 1.新建项目:AdminLteDemo ...

  2. thinkphp将上传的临时文件移动到指定目录

    thinkphp将上传的临时文件移动到指定目录 新建common.php文件 <?phpuse think\facade\Env; /** 移动上传的临时文件 * * @img_dir stri ...

  3. gym102346题解

    B Buffoon 判断最大值是不是第一个数,签到题. H Hour for a Run 输出\(n*m\)的\(10\%\)到\(90\%\),签到题,注意别用浮点数和ceil,有精度问题. M M ...

  4. 使用apache的poi来实现数据导出到excel的功能——方式二

    此次,介绍利用poi与layui table结合导出excel.这次不需要从数据库中查询出来的数据进行每一行的拼接那么麻烦,我们这次将标题定义一个id值,对应从数据库中查找出来的字段名即可. 1.po ...

  5. mybatis <=或这个>=提示错误Tag name expecte问题解决

    解决方案: 1.将<号或者>号进行转义 DATE_SUB(CURDATE(), INTERVAL 31 DAY) <= DATE(created) 2.使用<![CDATA[ ...

  6. Oracle 的 rownum 问题

    对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,be ...

  7. java多态的实现原理(JVM调用过程)(综合多篇文章,参考见文末)

    一个对象变量可以指示多种实际类型的现象称为多态 允许不同类的对象对同一消息做出响应.方法的重载.类的覆盖正体现了多态. 1.多态的机制 1.1 本质上多态分两种 1.编译时多态(又称静态多态) 2.运 ...

  8. 重构网页过程中的小tips

    1.display为inline-block的元素可以使用virtical-align:middle来使得元素垂直居中对齐 2.在一些按钮标签或者mark标签中,如果文本内容确定不会改变长度的话,可以 ...

  9. python编程基础之二十七

    列表生成式:[exp for iter_var in iterable] 同样也会有字典生成式,集合生成式,没有元组生成式,元组生成式的语法被占用了 字典生成式,集合生成式,就是外面那个括号换成{}  ...

  10. python编程基础之九

    原码, 反码, 补码原码,即用二进制表示正数: 原码 == 反码 == 补码负数: 反码: 原码除符号位之外全部取反 补码: 反码 + 1 位运算:运算符 作用 & 按位与 | 按位或 ^ 按 ...