CTF之MISC
文件操作与隐写
-
file命令:当文件无法识别,不知后缀名的时候可以使用file命令分析出文件类型。举个例子:
我在桌面放了一个jpg的图片,但是没有后缀名,win10就无法识别,
用一下file命令,然后把后缀名加上就好了。 -
winhex的使用,Winhex可以查看文件的16进制数据,通过文件头信息判断出文件的类型。下面是常见的文件头类型:
举个例子,还是那张图,可见FFD8FFE0就是Jpeg类型的图片(因为某种原因可能会在最后一回差那么一点)。 -
文件头残缺
将刚才的图片头信息改为“44444444”,如图
有些时候file命令是无法分析出文件类型的如下,
就像这样,他只会返回一个data,我们就要通过其他手段猜出文件格式,使用winhex将其补充完整。改回来之后就分析出来了。
文件分离操作
1.binwalk
有时候做题,我们会得到一张图片,然而flag可能被隐藏在图片的16进制信息里。我们可以这么操作,
binwalk filename:分析文件的构成,如图:
可见文件由3部分组成。
binwalk -e filename可以将文件分离。如图:
分离后自动创建一个文件夹保存分离后的文件。
- foremost
有时候binwalk是没办法将文件分离开的,我们可以考虑foremost.用法如下:
foremost filename -o 分离后要保存的文件夹 foremost还会自动生成一个分离日志。
- 有时候文件被拆的七零八落,比如123abc456,这种情况下用binwalk和foremost自然是分不开的。举个例子:
dd if=filename of=filename bs=size count=num skip=num
解释一下, if后的filename是你要进行操作的文件
of后的filename是你操作后获取的一截数据要保存到哪里
bs是将文件分块
count是你要去几块
skip是分块后,你要跳过前边几块,从哪一块开始取count块 - 如果不会dd也没关系,我们可以使用binwalk分析一下文件,
他会告诉我们从0到91是一个PNG,从92到87016是一个压缩数据,87017之后的又是一个文件。如此我们就可以从winhex打开文件,然后手动从92到87016的数据剪切出来保存得到一个文件。注意在winhex里地址是
的。
文件合并
1.Linux下文件合并主要靠cat命令:cat 1.txt 2.txt 3.txt > all.txt,意思是将1.txt、2.txt、3.txt合并为all.txt.
Linux下计算md5:md5sum filename,比如md5sum duan.jpg
2.Windows下的文件合并:copy /B 需要合并的文件 输出的文件。举个例子:copy /B 1.txt + 2.txt + 3.txt all.txt
Windows下计算md5:certutil -hashfile 文件名 md5
文件内容隐写
文件内容隐写就是讲flag的值以16进制的形式写入到一个文件中,通常是在文件开头或者结尾,如果在中间的话可以用winhex或者010Editor或者Notepad++的HEX-Editor插件中的搜索查找flag或者key,但是不一定啊,有时候flag被加密成md5或者base64,如果文本不长的话最好还是大概看一眼。
图片文件的隐写
-
细微的颜色差别
推荐Stegsolve,对图片进行运算(加减异或等),查看通道, -
GIF图片多针隐藏
一般用photoshop,或者Firework查看图层,每一帧,或者通道。 -
Exif
右键属性查看详细信息,一般是图片在拍摄的时候记录的一些信息。 -
图片修复
TweakPNG:文件头正常,但无法打开文件,可以考虑利用TweakPNG计算并修改CRC值。有时候替换之后还是不行,可能是因为图片的高度宽度不够,导致计算出来的CRC 错误,如此一来就要写脚本计算出对的高度和宽度(脚本问百度),改了高度宽度flag就回出来了,至于文件的高度和宽度对应的是哪几位,可以问百度,通常我是看一下图片现在的高度和宽度,计算出16进制,在winhex中找到对应的16进制就是高度和宽度了,一般在文件的16进制信息的前几行。 -
最低有效为LSB隐写
LSB隐写就是通过修改RGB颜色分量的最低位二进制(LSB),来进行信息的储存,人类的眼睛并不能感知到前后的变化- Stegsolve:Stegsolve >> Data Extract,这个软件怎么玩儿大家可以自行百度,简单但是麻烦
- zsteg工具:kali中安装命令gem install zsteg;检测隐写:zsteg filename
- wbstego4
- 自己写Python脚本:详情参见大佬博客LSB隐写
-
图片加密
- Bftools
Bftools:在windows下对加密过的图片进行解密;
命令:Bftools.exe decode braincopter 要解密的图片名称 --output 输出文件名;
Bftools.exe run 上一步输出的文件
- SilentEye
SilentEye可以将文字或者文件隐藏到图片的解密工具。
使用SilentEye打开目标图片,点击image->decode,点击decode查看隐藏文件,点击保存即可。 - Stegdetect
Stegdetect主要用来分析jpg文件
命令:stegdetect xxx.jpg
stegdetect -s 敏感度 xxx.jpg
Jphide是基于最低有效位LSB的JPEG格式图像隐写算法,当检测出来加密方式为jphide是,可以用jphs工具解密。jphs是win下的图形界面。
Outguess加密,解密命令:outguess -r 要解密的文件 输出结果的文件;outguess是kali下的命令,使用sudo apt-get install outguess安装,kali的官方源可能找不到,我用的中科大的镜像源。
F5加密:使用工具解密就好了,这个工具我也没有,或者使用脚本解密。
- Bftools
补充
有时候分析之后得到的二维码是黑白相反的,我们可以用windows自带的画图工具取反色。
操作如下:
打开图片
右键取反色