本题源自 Pragyan CTF 2019,比赛结束时分值 50 pts。
就以这个极其入门的简单题开始我的隐写题 Write-up 吧(毕竟稍难一点就不会了
-
- JPEG 文件以
0xFF D8
开始,此固定码被称为 SOI (start of image); - JPEG 文件的 EOI (end of image) 为
0xFF D9
; - ZIP 文件固定开头为
0x50 4B 03 04
。
- JPEG 文件以
首先,原文件在此:
隐写题套路,先用十六进制查看器打开(本文采用工具为 Hex Fiend)。
检查 SOI 为 0xFF D8
,无异常;然而文件结尾却并未发现正确的 EOI(EOI 不是 Eol!!!):
与此同时,注意到文本显示区有 d.zip
字样,推测图片中掺入了一个 zip 压缩文件。
注意到图片并未损坏,因此图片的 JEPG 部分应已符合标准,故查找 EOI:
大概在文件一半的位置找到图片的结尾,同时发现 EOI 之后紧接着的 0x50 4B 03 04
是 ZIP 的文件的起始标志。不难判断出,从此处开始一直到文件结尾的部分是个附加的 ZIP 压缩文件。
因此,将 ZIP 文件的数据部分拷贝出来,并粘贴至用二进制编辑器新建的文件中,命名为 d.zip (文件名可随意)并保存,得到压缩包。将其以 ZIP 方式解压可得文件夹 d,内有两文件:a.zip 和 secret.bmp。其中,a.zip 解压需要密码,而 secret.bmp 在尝试打开时会提示“文件已损坏”。再次使用二进制编辑器打开 secret.bmp,然而发现文件内容是文本文件,并非 BMP 文件:
观察文本,可发现 base64 字符串 dGhlIHBhc3N3b3JkIGlzOiBoMzExMF90aDNyMyE==
,解码,得到:the password is: h3110_th3r3!
因此,使用 h3110_th3r3
解压 a.zip,得到图片 a.png:
最让人无语的地方要来了——
图片乍一看就是几个几何图形,容易让人习惯性地以为仍需要用二进制编辑器查看隐写内容;然而,在长时间查看图片二进制信息无果后,我又无聊地重新看起了原图,这才发现在黑色矩形下方隐隐约约有些字迹,甚至能看到 pctf{….} 的样式!显然这是 Flag 无疑了:
然而,试图一点一点尝试看清每个字符的我终于精疲力竭却还没有认全。无奈之下想到了用 PS 提高对比度,这才终于让 Flag 现出原形:
提交 Flag,50 pts 到手(为什么只有50…
感想
降低对比度的隐写可是真·社工隐写🌚(没错所以我给这篇加上了社会工程学的标签。。。
Leave a Reply