image-20250722102128231

解题步骤

第一步:文件分析与异常发现

  1. 解压文件: 挑战始于一个 068.zip 压缩包,解压后得到一个文本文件 068.txt

  2. 查看内容: 初步使用 cat 命令查看文件内容,我们得到一行被小鸟图标包围的文本:

    ┌──(kali㉿kali)-[/mnt/hgfs/gx/x/tmp]
    └─$ cat 068.txt   
    🐦It's not that easy, tale a deep breath and relax. Chirp, ϲhⅰrp, chirp.Ιt's nοt that easy, tale a deep breath and relax. Chirp, chirp, chirp.🐦

    乍一看,这似乎只是一句普通的句子。然而,如果使用带有 -A 参数的 cat 命令来显示所有非打印字符,就会发现事情并不简单:

    ┌──(kali㉿kali)-[/mnt/hgfs/gx/x/tmp]
    └─$ cat -A 068.txt
    M-pM-^_M-^PM-&I...

    大量的 M-^ 符号表明,这些字符并非标准的 ASCII 字符。仔细观察可以发现:

    • 宽体字符: 几乎所有的字母都是全角(Full-width)形式,例如 而不是 I
    • 不规则空格: 单词之间的空格宽度不一,它们是 Unicode 中定义的多种不同宽度的空格字符。
    • 同形异义字 (Homoglyphs): 文本中可能混入了其他看起来与标准字母一样的 Unicode 字符,例如希腊字母 ο (omicron) 代替了拉丁字母 o

    这些迹象明确地指向了一种高级的文本隐写术。

第二步:理解 Unicode 隐写术原理

这种隐写术的原理是将信息编码到字符的选择中。

  1. 字符集: 对于每一个标准 ASCII 字符(如 a, b, 等),都存在一个包含它自身的、以及多个视觉上极为相似的 Unicode 变体字符的列表。
  2. 编码: 秘密信息首先被转换成二进制码流(如 011010...)。
  3. 嵌入: 程序在生成载体文本时,会根据要隐藏的二进制位来从备选列表中选择具体的字符。例如,如果 t 有 4 个变体 t, , , 𝔱,它们可以分别用来表示 2-bit 的二进制数 00, 01, 10, 11。当程序需要隐藏 01 时,它就会在文本中写入
  4. 隐藏: 通过这种方式,整段秘密信息被分解成无数个小片段,并“溶解”在整个文本的字符和空格的选择之中,使其无法被直接阅读。

第三步:使用专业工具解码

手动解码几乎是不可能的,因为它需要一个庞大的 Unicode 变体字符数据库。因此,我们需要使用专门的解码工具。

  1. 在线工具: Holloway's Steganography Tool 是一个能够处理此类 Unicode 隐写术的在线解码器。

  2. 解码操作: 将 068.txt 中的完整内容(包括前后的 🐦 图标)复制并粘贴到该网站的输入框中。

  3. 获取结果: 该工具会自动分析文本中每个字符的 Unicode 编码,识别出其在变体列表中的索引,从而提取出隐藏的二进制位,并最终将其还原为原始信息。

    解码后得到的隐藏文本为:

    hmvgreetings_from_green_br0ther
    

最终 Flag

hmvgreetings_from_green_br0ther