引言
下半年很忙,好久不做题,趁2025元旦放假整理一道高质量的题目,怀念一下繁忙的2024年。
题目
考虑到某公司的不分享精神或许会有版权之类的争端,文件链接以后就不放了。
名称:happymd5
提示:有好多奇奇怪怪的MD5值,这是用来干什么的呢。
Writeup(WP)
-
题目附件cipher.zip压缩包,里面两个文件,一个是《cipher》可以直接拿出来,另一个《key is Cloaxxxx.txt》需要密码,打开压缩包可以看见提示:“每个 'x' 均为一个字符”,很平和的开端,暴破一下就行了。
-
暴破得到密码Cloakify,解压看到《key is Cloaxxxx.txt》跟《cipher》一样都是每行一个md5串,搜索的值Cloakify是一种python2下的编码:https://github.com/TryCatchHCF/Cloakify 下载后学一下用法,解码得到《flag.zip》文件
┌──(kali㉿kali)-[~/MIsc/Cloakify]
└─$ python -V
Python 2.7.18┌──(kali㉿kali)-[~/MIsc/Cloakify]
└─$ python decloakify.py cipher key
PH�S|e\���flageP;�Qt����fˆ#��^@�����g�
zC��&&^�▒▒u�>��GP�lAE��ouu��F:����
���/���mJ�Y"�$�FJ�˾��f�6ʍԜFVW�▒xږ���S}Iz:��-��&x��▒���C
wu���FNj��K��"FM�S9��2u�q����1c�����`����){ſf��1��_�x�`�Y�Bf�L}z�>������L�yK���䵯8\��k_՞�#�PKH�S|e\���$ flag▒�r�9����r�9���]�!q���PKV┌──(kali㉿kali)-[~/MIsc/Cloakify]
└─$ python decloakify.py cipher key > flag.zip┌──(kali㉿kali)-[~/MIsc/Cloakify]
└─$ unzip flag.zip
Archive: flag.zipinflating: flag
这里有一些小插曲
- decloakify.py文件有一些不足,导致widows上运行会报错,阅读而下源码,可以修正,还可以增加用base64打印解码内容
(py27) D:\CTFtools\CryptoTools\Cloakify>python decloakify2.py cipher key flag.zip
decloakify2.py cipher.txt key.txt flag.zip
UEsDBBQAAAAIAEipC1N8ZVyp/AAAAL4BAAAEAAAAZmxhZ......
- windows下解码出来的zip包不能用,会提示压缩包已损坏,原因是换行(0D0A),需要hex修改《flag.zip》删掉里面0A前的0D
- 《flag.zip》解压缩得到《flag》里面内容为emoji,继续尝试Cloakify
┌──(kali㉿kali)-[~/MIsc/Cloakify]
└─$ python cloakifyFactory.py ____ _ _ _ __ ______ _ / __ \ | | | |_|/ _| | ___| | |
| / \/ | ___ __ _| | ___| |_ _ _ | |_ __ _ ___| |_ ___ _ __ _ _
| | | |/ _ \ / _` | |/ / | _| | | | | _/ _` |/ __| __/ _ \| '__| | | |
| \__/\ | |_| | |_| | <| | | | |_| | | || |_| | |__| || |_| | | | |_| |\____/_|\___/ \__,_|_|\_\_|_| \__, | \_| \__,_|\___|\__\___/|_| \__, |__/ | __/ ||___/ |___/ "Hide & Exfiltrate Any Filetype in Plain Sight"Written by TryCatchHCFhttps://github.com/TryCatchHCF(\~---./ (\-`-/)( ' ' ) data.xls image.jpg \ List of emoji, IP addresses,\ ( \_Y_/\ ImADolphin.exe backup.zip --> sports teams, desserts,""\ \___// LoadMe.war file.doc / beers, anything you imagine`w "==== Cloakify Factory Main Menu ====1) Cloakify a File
2) Decloakify a File
3) Browse Ciphers
4) Browse Noise Generators
5) Help / Basic Usage
6) About Cloakify Factory
7) ExitSelection: 2==== Decloakify a Cloaked File ====Enter filename to decloakify (e.g. /foo/bar/MyBoringList.txt): flagSave decloaked data to filename (default: 'decloaked.file'): Preview cloaked file? (y/n default=n):
Was noise added to the cloaked file? (y/n default=n): Ciphers:1 - geoCoordsWorldCapitals
2 - dessertsArabic
3 - belgianBeers
4 - dessertsSwedishChef
5 - desserts
6 - worldBeaches
7 - dessertsRussian
8 - dessertsThai
9 - worldFootballTeams
10 - hashesMD5
11 - rickrollYoutube
12 - dessertsHindi
13 - evadeAV
14 - geocache
15 - dessertsPersian
16 - starTrek
17 - topWebsites
18 - amphibians
19 - pokemonGo
20 - emoji
21 - skiResorts
22 - dessertsChinese
23 - ipAddressesTop100
24 - statusCodesEnter cipher #: 20Decloaking file using cipher: emoji!!! Oh noes! Error decloaking file (did you select the same cipher it was cloaked with?)Press return to continue...
无法解码!!
这里也有一些小插曲
- 好不容易知道了Cloakify,里面又有emoji这种解码方式,思维定式加上急于尝鲜,导致这道题目卡了很久
- 阅读代码我们知道Cloakify本质上就是base64编码换表。后面仔细分析,发现《ciphers\emoji》文件里面的表情跟《flag》里面的表情不太一样
- 《flag》里面的表情串存在无法删除的情况
- 《flag》里面的表情串的长度好像有问题
- emoji相关的编码有好几种,我之前的博文也有说到。因为没有密钥,首先尝试了base100和codeEmoji无果,剩下就是emoji-aes了但是没有密码!
- 尝试暴破,因为emoji-aes是javascript的,在线的不能短时间高频调用,花了大量时间阅读代码,aes部分的核心是crypto-js.js没有变,其实就是用表情符替换了字母,又是一个base64换表。用python重新写,折腾很久,老婆叫我吃午饭,中断了...
- 吃午饭时突然想到前面怀疑表情串长度有问题及存在无法删除的事,是不是零宽隐写,饭后立马验证
>>> flag=open('flag','rb').read()
>>> flag.decode('utf-16')
'🙃💵🌿🎤🚪🌏🐎🥋🚫😆....\u200c\u200c\u200c\u200c\u200d\ufeff\u200d\ufeff✖\u200c\u200c\u200c\u200c\u200d\u202c\u200d......🗒🗒'
- 这么明显!
- 零宽解码(unicode_steganography)后得到密文和密钥,emoji-aes解密即可
本题得解。
总结
- 网上搜到《2022年浙江省大学生网络与信息安全竞赛-Misc部分(决赛)》的一题【Unkn0wnData 数位板】,请关注前10个表情符:🙃💵🌿🎤🚪🌏🐎🥋🚫😆,还有后面的2个🗒🗒应该就是'}'了吧?一样的配方,一样的味道;这个应该是该公司emoji-aes题目的标志。
# emoji-AES解密
Where1sKey?
🙃💵🌿🎤🚪🌏🐎🥋🚫😆✅🍍🎤🐘🌏ℹ⌨😍🎈✉🤣🛩🍌🚪🍴ℹ☺🚹❓🍴🔬🌪🍵👣🔄☃👌😎👌🔄👌🔪🍌👁🍍🍌🌏🎃🚰🍵🐍🎅✅🍍🦓😎😊🤣🏹🍍💧🔄🔄🤣👁🥋🚫☺🍴😁🚫😇🚰⏩😍🌿💵🦓😇🛩✖🕹🐎📂📂💧🗒🗒
密码为:Toggled
DASCTF{ad15eecd2978bc5c70597d14985412c4}
- 比赛时可有没有这么多时间折腾,很久不做零宽隐写的题目就忘记了,经验和灵感并存!