在CTF(Capture The Flag)竞赛中,参赛者常常面临隐写术挑战,需要通过对图像进行深入分析来解码隐藏信息。本文记录了一道简单的关于图像分析的题,如何使用隐写分析工具Stegsolve.jar来处理这类挑战。本例中,首先得到两张看似相同的图片,使用Stegsolve的Image Combiner功能揭露出其中隐藏的二维码。此后,通过进一步分析三个不同颜色通道中的二维码,揭示了使用DES算法和特定密钥加密的文本。最终,利用这些信息成功解密出竞赛的flag。
拿到题目,解压文件得到两张图片,看起来是两张相同的照片(仅仅肉眼感官上的相同)
图片分析
使用命令java -jar StegSolve.jar
打开隐写分析工具Stegsolve
, 先打开第一张图片first.png
再选择 Analyse --> Image Combiner
项打开第二张second.png
其中Analyse
的子项从上到下的依次意思是
File Format (文件格式):
作用: 查看并了解图像文件的基本信息和格式。
用途: 了解图像的类型(如PNG, JPEG, BMP等)和相关的元数据。
Data Extract (数据提取):
作用: 从图像中提取隐藏的二进制数据或文件。
用途: 尝试找到隐藏在图像中的数据,常用于隐写术(steganography)中。
Steregram Solve (立体图解密):
作用: 分析和解密立体图(如隐藏在图像中的立体信息)。
用途: 在某些挑战中,图像可能包含隐藏的3D信息,需要使用该功能来解密。
Frame Browser (帧浏览器):
作用: 浏览和查看多帧图像(如GIF动画)的每一帧。
用途: 逐帧查看图像,寻找隐藏的信息或变化。常用于分析GIF文件中的隐藏内容。
Image Combiner (图像合成器):
作用: 合并多张图像或图像的不同通道。
用途: 将图像的不同部分或通道合并在一起,可能会揭示隐藏的信息或模式。
此时我们可以点击下方的<
和>
左右切换,在对比过程中发现二维码了,将其保存 solved.bmp
通过Stegsolve
再次打开刚刚保存的二维码,,发现三个完整的QR,分别是Blue plane 0、Green plane 0、Red plane 0
分别保存三个QR,这里分别命名为:QR-Blue.bmp、QR-Green.bmp、QR-Red.bmp
二维码识别
我们再通过QR_Research
对刚刚保存的QR进行识别,先扫QR-Blue.bmp
,得到一串加密字符 U2FsdGVkX18IBEATgMBe8NqjIqp65CxRjjMxXIIUxIjBnAODJQRkSLQ/+lHBsjpv1BwwEawMo1c=
这段文本是使用OpenSSL的命令行工具加密生成的,其前缀 U2FsdGVkX1
是典型的OpenSSL加密字符串的标志。这意味着该文本很可能使用了某种对称加密算法,如AES或DES,其中加密时使用了salt(盐值)以提高加密强度。
解密这段文本需要知道:
1. 使用的确切加密算法(如AES或DES)。
2. 加密时使用的密钥。
3. 加密算法的工作模式和填充方式(如果适用)。
4. 任何初始向量(IV),如果使用了需要IV的工作模式。