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

做这道题目的经历比较坎坷,题目中用于隐藏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. Git同步更新操作GitHub和码云仓库上面的代码

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

  2. 【Jenkins持续集成(二)】Windows上安装Jenkins教程

    一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...

  3. Dart函数、类和运算符-处理信息

    编程语言虽然千差万别,但归根结底,它们的设计思想无非就是回答两个问题: 1.如何表示信息: 2.如何处理信息: 函数 函数是一段用来独立地完成某个功能的代码.函数是对象类型,它的类型叫做Functio ...

  4. 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本

    小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...

  5. setStyleSheet 设置背景图片

    设置背景颜色很简单,大部分教程都对 设置背景图像有一个小坑. 设置背景图像主要有两种情况, 第一种:图片的绝对路径 ``` this->setObjectName("mainWindo ...

  6. layui table异步调用数据的时候,数据展示不出来现象解决方案

    最近使用layui table进行异步获取数据并填充的时候,控制台打印出数据长度为0,但是其中还有数据,网上找了很多办法,下边是我最后使用的. 一般,render渲染表格是独立的书写格式,但是我在做数 ...

  7. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  8. el-table实现行列拖拽

    element ui 表格没有自带的拖拽排序的功能,只能借助第三方插件Sortablejs来实现. 实现步骤: 安装Sortable.js npm install sortablejs --save ...

  9. javascript基础修炼(13)——记一道有趣的JS脑洞练习题

    目录 一. 题目 二. 解法风暴 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址 ...

  10. 解决MVC中Model上的特性在EF框架刷新时清空的问题

    MVC中关于前端数据的效验一般都是通过在Model中相关的类上打上特性来实现. 但是在我们数据库发生改变,EF框架需要刷新时会把我们在Model上的特性全部清除,这样的话,我们前端的验证就会失效. 因 ...