HackThisSite - Steganography Mission 1
Challenge
This is an encoded message, the only tip you get is '2 null bytes' 这是一条编码过的消息,唯一的提示是
2 null bytes。NOTE: There is no encoding error
题目提供一个 BMP 图片文件,密码隐藏在像素数据中。
Solution
1 | $ curl -sL -b "HackThisSite=<mission-cookie>" \ |
这是一个 8bpp indexed BMP:
- 文件头:0–53
- 调色板:54–1077
- 像素数据:1078–49357
bfOffBits(1078) + biSizeImage(48280) = 49358,像素数据正好延伸到文件末尾。因此,隐藏信息位于像素数组内部,调色板和文件尾部都不是载荷位置。
像素数据中只有偏移 59 和 116 处出现连续的
00 00,两处都在 BMP 存储的第 0
行,也就是图像最底行。00 00 之间的 55
个像素字节是载荷:
1 | 16 16 17 17 17 16 16 16 16 17 17 16 16 17 17 16 16 17 17 16 17 17 17 16 |
这 55 个字节只包含相邻的两个像素索引:0x16 和
0x17。它们分别编码 bit 0 和
1:
1 | 0x16 -> 0 |
得到的 bit 流有 55 位。前 7 位 0011100
属于第一个字节,末位补 0 后按 8 位分组:
1 | 0011100 + 0 -> 00111000 -> 8 |
因此,信息具体隐藏在 BMP 像素数组的底行中,形式是两个 00
标记之间的 0x16/0x17
像素索引序列。调色板只负责把这些索引显示成灰度,解码时读取的是像素索引本身。