哈喽大家好,我是菜鸡林某。
今天给大家带来CTF夺旗赛入门的第一步杂项篇
本篇预计也是分为好几个个部分因为他比较多
往期传送门:
网络安全CTF夺旗赛入门到入狱-入门介绍篇
网络安全CTF夺旗赛入门到入狱-密码学上篇
网络安全CTF夺旗赛入门到入狱-密码学下篇
今天主要就讲一个内容
- 文件操作与隐写
文件操作与隐写
1. 文件类型识别
文件无后缀 :
-
File命令
当文件没有后缀名或者有后缀名而无法正常打开时,根 据识别出的文件类型来修改后缀名即可正常打开文件。
使用场景:不知道后缀名,无法打开文件。
格式:file filename
-
Winhex
通过winhex程序中可以查看文件头类型,根据文件头类型判断出文件类型
使用场景:windows下通过文件头信息判断文件类型
常见的文件头类型如图所示
文件头残缺/错误:
-
通常文件无法正常打开有两种情况,一种是文件头部残缺,另一种是文件头部字段错误。针对文件 头部残缺的情况,使用winhex程序添加相应的文件头,针对头部字段错误,可以找一个相同类型的文 件进行替换。
-
使用场景:文件头部残缺或文件头部字段错误无法打开正常文件。
-
格式:file 文件名!
2.文件分离操作
Binwalk 工具
Binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件 是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文 件的目录。同目录下生成一个形如_文件名_extracted的文件目录,目录中有 分离后的文件。 -
用法: 分析文件:binwalk filename 分离文件:binwalk –e filename
foremost
如果binwalk无法正确分离出文件,可以使用foremost,将目标文件复制 到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录 中会按文件类型分离出文件。 -
用法: foremost 文件名 –o 输出目录名
dd
当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离。
格式: dd if=源文件 of=目标文件名 bs=1 skip=开始分离的字节数
参数说明:
if=file #输入文件名,缺省为标准输入。
of=file #输出文件名,缺省为标准输出。
bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
skip=blocks #从输入文件开头跳过 blocks 个块后再开始复制。
winhex
除了使用dd外,还可以使用winhex实现文件手动分离,将目标文件拖入winhex中,找到 要分离的部分,点击复制即可。 除了使用dd外,还可以使用winhex实现文件手动分离,将目标文 件拖入winhex中,找到要分离的部分,点击复制即可。
使用场景:windows下利用winhex程序对文件进行手动分离
例:新建一个文件,文件大小1byte,在文件开头位置点击粘贴,弹出提示框选否、确定,将文件 保存为想要的后缀即可
010Editor
将某块区域文件保存的方式如下:
- 010Editor打开文件
- 选中右键
- Selection
- Save Selection
将16进制字符文件导入保存操作方法如下: - 将16进制字符文件保存在一个文件
- 打开010Editor import Hex
文件合并
- Linux下的文件合并
使用场景:linux下,通常对文件名相似的文件要进行批量合并
格式: cat 合并的文件 > 输出的文件
•完整性检测:linux 下计算文件md5:
md5sum 文件名
- Windows下的文件合并
使用场景:windows下,通常要对文件名相似的文件进行批量合并
格式: copy /B 合并的文件 输出的文件命令
•完整性检测:windows下计算文件md5:
certutil -hashfile 文件名 md5
文件内容隐写
文件内容,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分, 分析时通常重点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键字KEY或者flag 来查找隐藏内容。 使用场景:windows下,搜索隐写的文件内容
- Winhex/010Editor
通常将要识别的文件拖入winhex中, 查找具有关键字或明显与文件内容不和谐的部 分,通常优先观察文件首部和尾部,搜索flag 或key等关键字,最后拖动滚轮寻找。
-
Notepad++
使用notepad++打开文件,查看文件头尾是否有
含有关键字的字符串,搜索flag或key等关键字,最后拖
动滚轮寻找。
另外通过安装插件HEX-Editor可以实现winhex的功能。