1. 初步分析与信息获取
首先,我们拿到了一个名为 082.zip 的压缩文件。通过 7z 命令解压后,得到一个 082.bin 文件。
┌──(kali㉿kali)-[/mnt/hgfs/gx/x/tmp]
└─$ 7z x 082.zip -o82
...
Everything is Ok使用 file 和 ls -al 查看文件信息,确认它是一个大小仅为 61 字节的二进制数据文件。
┌──(kali㉿kali)-[/mnt/…/gx/x/tmp/82]
└─$ file 082.bin
082.bin: data
┌──(kali㉿kali)-[/mnt/…/gx/x/tmp/82]
└─$ ls -al
-rwxr-xr-x 1 kali kali 61 2024年 4月19日 082.bin直接 cat 文件,可以看到一堆乱码,但其中夹杂着一些可识别的“花式”字符,并且能勉强看出 HMV{...} 的结构,这与题目提示相符。
题目提示:
8Universal 16Threads of 32Friendship. Flag format: HMV{...}
8Universal 加密后的数据以 UTF-8 编码呈现
┌──(kali㉿kali)-[/mnt/…/gx/x/tmp/82]
└─$ cat 082.bin
Ⓗ<�\��6{�w𝕠5ؠ��5ݾ��_𝙤5�'�_5��𝓕}使用 xxd -p 得到文件的完整十六进制表示,这是我们后续分析的基础:
e292bd3cd85cddff367b0000000001d477f09d95a035d8a0ded835ddbeff
d501000000005ff09d99a435d827de005f35ff00000001d413f09d93957d
002. 核心突破:识别混合编码
这是解开谜题最关键的一步。我们将注意力集中在文件开头的 HMV 部分。通过在 CyberChef 等工具中反复尝试,我们发现它是由多种编码方式混合而成的:
- H: 由字节
e292bd表示。这在 UTF-8 编码下,正好是带圈字母Ⓗ。 - M: 由字节
3cd85cdd表示。这在 UTF-16LE (小端序) 编码下,是带圈字母🅜。 - V: 由字节
ff36表示。这在 UTF-16BE (大端序) 编码下,是全角字母V。
这个发现证实了题目提示 "8Universal 16Threads of 32Friendship" 的含义:Flag 中的字符被替换为了各种“花式”Unicode 字符,并且这些字符自身又分别使用了 UTF-8、UTF-16 甚至 UTF-32 进行了编码,最后拼接在一起。
3. 逐个击破:解码 Flag 内容
我们识别出 7b 是 { 的 ASCII 码,7d00 代表 }。接下来,我们对花括号中间的核心数据进行逐个解码:
00000000 01d477f09d95a035d8a0ded835ddbeff d50100000000 5ff09d99a435d827de00 5f35ff00000001d413f09d9395
通过细致地手动分段和解码,我们拼凑出 Flag 的各个部分:
0001d477-> UTF-32BE ->𝑷(对应 'p')f09d95a0-> UTF-8 ->𝕠(对应 'o')35d8a0de-> UTF-32LE ->wd835ddbe-> UTF-16BE ->𝗲(对应 'e')ffd501-> UTF-32LE ->𝗿(对应 'r')5f-> ASCII ->_f09d99a4-> UTF-8 ->𝙤(对应 'o')f09d9395-> UTF-8 ->𝓕(对应 'f')5f-> ASCII ->_35ff-> UTF-16LE ->U(对应 'U')0001d413-> UTF-32BE ->𝐓(对应 't')f09d9395-> UTF-8 ->𝓕(对应 'f')
4. 结论
最终的 Flag 是:
HMV{power_of_Utf}
