DDCTF2019 MISC 北京地铁

一道考验脑洞和观察力的题目。题目给了一个压缩包。

压缩包下载:http://file.eonew.cn/ctf/misc/bmp.zip

思路借鉴自ChaMd5团队的博客:https://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247485730&idx=1&sn=cb90f178c56453f558acc626ec84ddad&chksm=e89e21fadfe9a8ecca8ac397984045c7ebda97577ac082d94141d37d0b12d70222128f0af2e7&mpshare=1&scene=23&srcid=#rd

题目提示

Color Threshold

  1. 提示:AES ECB密钥为小写字母
  2. 提示2:密钥不足位用\0补全
  3. 提示3:不要光记得隐写不看图片本身啊...

分析

binwalk检查

ex@Ex:~/test/bmp$ binwalk 北京地铁2.bmp 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PC bitmap, Windows 3.x format,, 3112 x 1979 x 24

图片里面应该没有隐藏文件。

隐藏字符串分析

先用strings分析一下文件发现了很多X字符和)字符还有一些其他没有用的字符,将这些字符过滤掉之后。

ex@Ex:~/test/bmp$ strings 北京地铁2.bmp | grep -vE "X|\)|\*|W"
+Ol7B
Ol7w
Ol7o
Ol7B
Ol7o
Ol7B
Mq.B
Mq.B
Ol7B
Mq.B
Ol7B
Mq.B
Ol7B
Ok6B
Mq.B
SMq.B
HMq.B
Mq.B
Mq.g
Mq.B
HMq.U
Mq.B
Mq.n
|Mq.B
Mq.B
SMq.B
HMq.g
HMq.g
etfA
M5f5f
M5f5e

还是看不出有什么隐藏信息。

stegsolve.jar分析

开始的时候用stereogram solver来查找图片的隐藏信息,还是没找到,最后用了Data extra功能,才发现是lsb加密。

得到提示字符iKk/Ju3vu4wOnssdIaUSrg==

后面借鉴了ChaMd5团队的博客,这个脑洞是真的没想到,在图片中魏公村的那里有疑似被PS的痕迹,所以认为那就是给我们的提示,然后直接写脚本解密。

#! /usr/bin/python3
# -*- coding:utf-8 -*-

from Crypto.Cipher import AES
import base64

aes_instance = AES.new(b'weigongcun'.ljust(16, b'\0'), AES.MODE_ECB)

cipher = base64.b64decode('iKk/Ju3vu4wOnssdIaUSrg==')

plaintext = aes_instance.decrypt(cipher)

print(plaintext)

运行实例:

ex@Ex:~/test$ python3 main.py 
b'DDCTF{CD*Q23&0}\x00'

总结

这题需要脑洞与实力进行结合,缺一不可,所以这题解出来的人数并不多,以后或许我也得多训练一下自己的脑洞。当然还有实力。