CTF修炼手册(二)

    坚持的第二天,已经晚了一天了。坚持坚持。。。

    今天的题目还是图片隐写,话不多说。题来了

        CTF修炼手册(二)

所需工具:

    1.binwalk(linux下)

    2.foremost(linux下)

    3.MP3Stego(windows下)

步骤:

    1.在linux下用binwalk对此图片进行分析(binwalk test.jpg),得到此图片是由一个jpg文件和一个zip文件组成的。

    2.用linux下用foremost对图片分离(foremost test.jpg),得到一个图片和一个压缩包。

    3.压缩包进行解压,得到一个MP3文件,和一个txt文件。

    4.在windows下利用MP3Stego软件和txt文件中的密码对MP3文件进行解析(MP3Stego -X是获取隐藏的东西 -P后面写 密  码),就会得到我们所需的信息。

    5.根据所得信息的格式可知此信息是经过base64编码,我们通过网络上的在线工具进行解码就可以得到所需flag。

原理:

1.首先这个复合的图片是怎么来的呢:在linux下利用copy -b test.jpg+test.zip test_ .jpg就会将test.jpg和test.zip文件直接以二进制形式连接起来形成test_.jpg文件。

2.那么这个test_.jpg为什么会被正常解析呢:这是因为jpg解析器只会根据二进制文件内jpg文件的开始标志和结束标志来决定那部分是jpg文件,也是说在jpg结束标志之后的二进制数据是会被jpg解析器忽略的。binwalk和foremost这两个软件也是这样来工作的。

下面就是一些常用格式的开始和结束标识符:

jpg开始:FF D8 FF E0 00 10 4A 46 49 46        jpg结束:FF D9

png开始:89 50 4E 47 0D 0A 1A 0A        png结束:49 45 4E 44 AE 42 60 82

GIF开始:47 49 46 38 39

BMP开始:42 4D E3 BF 22 00 00 00

rar开始:52 61 72 21

ZIP开始:50 4B 03 04 14 00 00 00 08 00

PDF开始:25 50 44 46

3.对MP3文件的解析,这个的原理我不是很清楚(很抱歉,希望大家知道的可以不吝赐教)

4.base64编码解码。base64编码是网络上常见的用于传输8bit字节代码的编码方式之一,要求把每三个8bit的字节转换为四个6bit的字节。base64编码只能表示64个字符(因为2的6次方等于64),分别是A-Z,a-z,0-9,+(根据系统可能不同),/(根据系统可能不同)。

CTF修炼手册(二)

base64编码后得到的只可能是字母、数字、+、/;并且可能是一个=或两个=结尾;=不可能在中间。

注:这次用到了三个软件,前两个软件都是工作在Linux环境下的。这里希望大家可以下载一个正常版本的(不要light版 )的kali(一种Linux系统),kali里面集成了很多的有用的软件。大家百度一下就可以,这里就不发链接了。至于MP3Stego大家也可以自行百度下载。