一、文件类型识别
背景:遇到文件没有后缀,不知道文件类型。
方法一、使用Linux中的file命令
原理:file命令会识别文件的文件头,通过文件头识别出文件类型。
命令格式:file <filename>
而文件头则可通过010editor查看,以下是常见文件的文件头。
文件类型 | 文件头 |
---|---|
JPEG/JPG | 头:FF D8 FF E0 尾:FF D9 |
PNG | 头:89 50 4E 47 0D 0A 1A 0A 尾:AE 42 60 82 标识:PNG |
GIF | 头:47 49 46 38 39(37) 61 尾:00 3B |
TIFF/TIF | 头:49 49 2A 00 |
BMP | 头:42 4D 标识:BM |
ZIP | 头:50 4B 03 04 标识:PK |
RAR | 头:52 61 72 21 |
PSD | 头:57 41 56 45 |
头:68 74 6D 6C 3E | |
WAV | 头:57 41 56 45 |
PCAP/PCAPNG | 头:4D 3C 2B 1A |
XML | 头:3C 3F 78 6D 6C |
HTML | 头:68 74 6D 6C 3E |
二、文件内容残缺
背景:通常有时候遇到文件无法打开,可能是文件头部残缺或者文件头部字段错误。
解决方法:需要通过给文件修复文件头,方可打开文件,所需要的工具010editor。
三、文件内容分离
1.BinWalk
背景:某些文件是由多个文件组成,而Binwalk可以分析文件是否由多个文件组成。
binwalk -e <filename> --run-an=root
输入binwalk获取指令更多信息
2.Foremost
formost <filename>
输入formost -h 获得指令信息
安装:apt install foremost -y(Kali)
四、文件内容合并
背景:有时候文件会被拆成多份,可以通过文件合并,来获取flag。
1.copy(Windows)
2.cat(Linux)
五、Exif隐写
背景:可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专⻔为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
注:只有jpg格式的图片存在Exif信息。
解决方法:
Windows:通过右键属性,查看详细信息,即可查看Exif信息。
Linux:通过exiftool命令来查看详细信息。
命令格式:exiftool <文件名>
六、双图层隐写
背景:图片含有多图层,信息图层隐藏在其他图层下,在使用16进制编辑器打开文件时会看到文件头部中包含firework标识。
解决方法:通过firework删除覆盖图片可以找到隐藏图片。
七、双图对比隐写
背景:题目给出两张的图片外观、大小、像素都基本相同。
解决方法:
使用工具:Stegsolve(该工具是基于Java的,需要配置Java8环境)
操作:使用StegSolve将两个文件的像素RGB值进行XOR、ADD、SUB等操作,查看能否得到有用的信息。注意:先选第一张与先选第二张比较的结果不同。
八、LSB隐写
背景:一张图片是由众多的色块组成,每一个色块都由RGBA(三原色+透明度)组成,每一个字母都占8个比特位,修改8个比特位的最后一位,则不会影响图片导致人眼看不出来,通过这种方法,则可以每8个比特位隐藏1bit信息,通过将这些信息收集组合,即可得到隐藏信息,其中隐藏信息有可能是字符串、图片、压缩包等。
解决方法:使用 Stegsolve的Data Extract功能,选取需要收集的数位和收集顺序,来获取隐藏信息。
除此之外,还可以使用zsteg (kali)来提取信息。
安装方法:命令行敲以下两个命令。
使用方法:zsteg <filename>
九、高度隐写
PNG数据结构格式
8个字节:89 50 4E 47 0D 0A 1A 0A 为png的文件头(固定)。
4个字节:00 00 00 0D(即为十进制的13)代表头部数据块的⻓度为13(固定)。
4个字节:49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)(固定)。
13位数据块
第一个数据块(IHDR代表该数据块的头): 49 48 44 52
前四个字节代表该图片的宽:00 00 00 08
后四个字节代表该图片的高:00 00 00 08
后五个字节依次为: Bit depth(图像深度)、ColorType(颜色类型)、Compression method(压缩方法)、Filter method(滤波器方法)、Interlace method(隔行扫描方法)
4个字节为png的CRC32检验码:36 21 A3 B8,由从从第12个字节到第28个字节的十七位字节进行CRC计算得到(可变)。
背景:图片显示不全,只有一半。
解决方法:要通过计算图片文件CRC值,计算出图片正确高度,修改高,恢复图片的正常高度。
十、二维码
二维码基本结构:
有时候当位置探测图形被遮挡时,二维码就扫不出来,此时就要修复二维码。还有时候二维码会黑白颜色反向(标志位置探测图形中间为白色),再颜色再反一下就可以了。
十一、盲水印
背景:数字水印技术,在数字化的数据内容中嵌入不明显w的记号。
解决方法:
工具使用:bwmforpy3.py(基于python3要安装对应环境)命令格式:python bwmforpy3.py decode 原图.png 合成后的图片.png 提出的水印.png --oldseed
结果图:
十二、gif分解组合
背景:有时候会遇见一些gif动态图,将flag快速闪动,这时候就需要将gif分解再进行拼接。
题目:攻防世界——glance-50
命令:convert 9266eadf353d4ada94ededaeb96d0c50.gif flag.png
##分解gif图片##命令:montage flag*.png -tile x1 -geometry +0+0 flag.png
## -tile 是拼接时每行和每列的图片数,这里用 x1,就是只一行,如果是4x1就是4列1行
## -geometry 是首选每个图和边距离尺寸,+0(x)+0(y),图照原始尺寸即可
合成照片:
十三、无线流量数据爆破
发现都是那种WLAN的包,则可以判断为无线密码加密。
命令:aircrack-ng <包文件> -w <密码本>
即可得出无线密码
十四、Word隐藏信息
可通过点显示/隐藏段落标记,获得隐藏信息。
十五、频谱图隐藏
得到音频文件可以使用软件Audacity,切换频谱图得到flag。
十六、JPEG隐写F5加密
首先是隐写工具的下载地址GitHub - matthewgao/F5-steganography: F5 steganography
其次是当前工具在Java17上运行会报错,需要安装Java11.
下载完成后,使用以下指令解密,密码作为可选项。
Java Extract 文件路径 [-p 密码]
解密的文件,会保存在output.txt文件里。
十七、逆序翻转文本逆序翻转工具,可以将文本列表按字符或按行逆序处理,将所有文本顺序反过来,头位交换方向。 - UU在线工具 (uutool.cn)
有时候拿到一堆十六进制的文本,看起来跟乱码一样,如下图。 考虑逆序排列十六进制,就会发现它其实是一个PNG图片,考察的是文件头的灵敏度熟悉度。