文件操作与隐写
1.文件类型识别
(1)File命令
当文件没有后缀名或者有后缀名而无法正常打开时,根据识别出的文件类型来修改后缀名即可正常打开文件。
使用场景:不知道后缀名,无法打开文件。格式: file 文件名
(2)winhex/010editor
通过winhex程序可以查看文件头类型,根据文件头类型判断出文件类型
使用场景: windows 下通过文件头信息判断文件类型
(3)文件头残缺/错误
通常文件无法正常打开有两种情况,一种是文件头部残缺, 另一种是文件头部字段错误。
针对文件头部残缺的情况,使用winhex或者010 Editor程序添加相应的文件头;
针对头部字段错误,可以找一个相同类型的文件进行替换。
使用场景:文件头部残缺或文件头部字段错误无法打开正常文件。
格式: file 文件名
2.文件分离操作
(1)Binwalk工具
- Binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离,如果分离成功会输出到目标文件,同目录下生成一个形如_ 文件名_ extracted的文件目录,目录中有分离后的文件。
- 用法: 分析文件: binwalk filename 分离文件: binwalk -e filename
(2)foremost
- 如果binwalk无法正确分离出文件,可以使用foremost,将目标文件复制到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件。
- 用法: foremost 文件名 -o 输出目录名
(3)dd
当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离。
格式: dd if=源文件 of=目标文件名 bs=1 skip=开始分离的字节数
参数说明: if=file #输入文件名,缺省为标准输入。 of=file #输出文件名,缺省为标准输出。 bs=bytes #同时设置读写块的大小为bytes,可代替ibs和obs。 skip=blocks #从输入文件开头跳过blocks个块后再开始复制。
(4)Winhex
- 除了使用dd外,还可以使用winhex实现文件手动分离,将目标文件拖入winhex中,找到要分离的部分,点击复制即可。
- 使用场景: windows 下利用winhex程序对文件进行手动分离
- 例:新建一个文件,文件大小1byte, 在文件开头位置点击粘贴,弹出提示框选否、确定,将文件保存为想要的后缀即可。
(5)010Editor
将某块区域文件保存的方式如下:
记事本里存放的二进制文件转成二进制文件
题目复现
题目:[爆破鬼才]
- 题目来源:polarctf-misc-[爆破鬼才]
- 解题:
将图片用010打开,ctrl+f
搜索压缩包文件头50 4B 03 04
复制该文件头及其后面的数据
点击右上角文件、新建
得到新文件
ctrl+s
保存,添加后缀.zip
,得到一个加密的压缩包
使用ARCHPR工具进行密码爆破,得到密码,解压压缩包得到flag
3.文件合并操作
(1)Linux下的文件合并
使用场景: linux 下,通常对文件名相似的文件要进行批量合并
格式: cat 合并的文件>输出的文件
完整性检测:
linux下计算文件md5:md5 sum 文件名
(2)Windows下的文件合并
使用场景:windows下,通常要对文件名相似的文件进行批量合并
格式: copy/B 合并的文件 输出的文件名
完整性检测:
windows 下计算文件md5:certutil -hashfile 文件名 md5
4.文件内容隐写
- 文件内容隐写,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键字KEY或者flag来查找隐藏内容。
- 使用场景: windows下, 搜索隐写的文件内容
(1)Winhex/010Editor
- 通常将要识别的文件拖入winhex中,查找具有关键字或明显与文件内容不和谐的部分,通常优先观察文件首部和尾部,搜索flag或key等关键字,最后拖动滚轮寻找
(2)Notepad++
- 使用notepad++打开文件,查看文件头尾是否有含有关键字的字符串,搜索flag或key等关键字,最后拖动滚轮寻找。
- 另外通过安装插件HEX-Editor可以实现winhex的功能。