CTF 解题技能之 MISC 基础一
杂项介绍
Miscellaneous 简称 MISC,意思是杂项,混杂的意思。
一、杂项大致有几种类型:
- 隐写
- 压缩包处理
- 流量分析
- 攻击取证
- 其它
本篇主要介绍杂项基础题目的知识点以及解题思路。
杂项题目主要是以文件附件作为题目,但是给的文件不一定是有后缀名的,这就需要我们识别这些文件
1、file 命令
file 命令实际上是一个命令行工具,用来查看文件类型。使用方法:
将文件复制到 kail 或者带有 file 工具的系统中,使用 file 查看文件。

将文件后缀名补上即可正常打开。
然后根据实际情况进行初步判断可能是什么类型的题目。
2、winhex
通过winhex程序中可以查看文件头类型,根据文件头类型判断出文件类型使用场景:windows下通过文件头信息判断文件类型
3、010Editor
010Editor 是一款快速且强大的十六进制编辑器。用来编辑二进制文件。有一个友好易于使用的界面,无限次的 undo 和 redo 操作。另外还可以打印 x 十六进制的字节或者以书签的方式标出某些重要的字节。我们可以通过使用 010Editor 查看文件的头部来判断类型。
以下是常见的文件头:

根据文件头数据判断文件类型。
二、文件类型识别
1、文件头残缺/错误
通常文件无法正常打开有两种情况,一种是文件头部残缺,另一种是文件头部字段错误。针对文件头部残缺的情况,使用winhex程序添加相应的文件头,针对头部字段错误,可以找一个相同类型的文件进行替换。使用场景:文件头部残缺或文件头部字段错误无法打开正常文件。格式:file 文件名

PNG 文件头中包含 IHDR 信息。

IHDR 的作用将在后续的图片类隐写中详细讲解:(四)PNG 文件格式的介绍
当文件类型不确定时就可以尝试查看文件头来判断。
如果没有后缀名,也可以查看文件尾部来判断文件类型。
2、以下是常见的文件尾部:
zip 文件的结尾以一串 504B0506 开始。
rar 文件以 C43D7B00400700 结尾。

JPG 文件结尾为 FFD9。
PNG 文件 结尾为 000049454E44AE426082。
Gif 文件结尾为 3B。
三、0×01 文件分离
介绍了文件类型的识别方法了,接下来来讲一下文件分离文件分离的原因:
在 CTF 这个充满脑洞的比赛中,出题人往往会以一些稀奇古怪的出题方式出题,因此你可以常常看见暴打出题人等字眼出现在比赛论坛中。在 CTF 中一个文件中隐藏着另外其他文件的题目是经常有的。这就需要掌握文件分离的技巧来应对。下面介绍几种姿势
1.Binwalk 工具
Binwalk是linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文件的目录。
同目录下生成一个形如 文件名extracted的文件目录,目录中有分后的文件。
用法:
分析文件:binwalk filename
分离文件:binwalk -e filename

Binwalk 工具介绍
Binwalk 是一个自动提取文件系统,该工具可以自动完成指定文件的扫描,智能发掘潜藏在文件中所有可疑的文件类型及文件系统。相比于之前介绍的 file 命令行工具来说,file 只能把一个文件识别成一个类型的文件,很难看出是否隐藏着其他的文件,Binwalk 就能很好的完成这项任务。
2、foremost
foremost 工具介绍
foremost 该工具通过分析不同类型文件的头、尾和内部数据结构,同镜像文件的数据进行比对,以还原文件。它默认支持 19 种类型文件的恢复。用户还可以通过配置文件扩展支持其他文件类型。
foremost 提取文件
有时候 binwalk 无法正确分离出文件,这时候就可以使用 foremost,将目标文件复制到 kali 中,在终端中使用命令行进入文件所在文件夹,使用如下命令:
Foremost 文件名 -o 输出目录名。

执行成功后会在目标文件的文件目录下生成我们设置的目录,目录有中按照文件类型分离出文件。

3、dd
前面介绍的两种都是自动化分离工具,dd 这个工具是一种半自动化工具,有的时候自动化工具不能实现文件的分离,所以需要用这个工具来进行分离。
使用 dd 命令分离文件格式:dd if=源文件名 bs=1 skip=开始分离的字节数 of=目标文件名参数说明:
if=file #输入文件名,缺省为标准输入。of=file #输出文件名,缺省为标准输出。
bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。skip=blocks #从输入文件开头跳过 blocks 个块后再开始复制。
以 IDF 实验室“抓到一只苍蝇”为例,需要将获得的文件去除前 364 个字节: dd if=s1 bs=1 skip=364 of=d1
使用 dd 命令分离文件格式:dd if=源文件名 bs=1 skip=开始分离的字节数 of=目标文件名参数说明:
if=file #输入文件名,缺省为标准输入。of=file #输出文件名,缺省为标准输出。
bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs。skip=blocks #从输入文件开头跳过 blocks 个块后再开始复制。
若需要将获得的文件去除前 364 个字节: dd if=s1 bs=1 skip=364 of=d1
4、fcrackzip
简介
Fcrackzip 是一款专门破解 zip 类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于 linux、mac osx 系统。
FCrackZip 是 Free/Fast Zip Crack(免费,快速 Zip 密码破解)的意思。
Kali 安装 apt-get install fcrackzip
0×03 总 结
介绍了这么多关于 CTF 基础类型的文件处理方法,为了方便大家梳理,提供一个思维导图给大家来参考。