
ZmxhZ3tZMHVfQHJlX1JlQDExeV9BX0cwMGRfR0FNRVIhISF9
flag{Y0u_@re_Re@11y_A_G00d_GAMER!!!}
[Week3] 俱乐部之旅(3) - 与时间对话
仔细看一遍txt文件的内容

注意要求使用到git方法 还要找到出题人藏的treasure
初看这个txt 几乎没有任何异样 细看看到下面有零星的乱码方格 把这段话复制到cyberchef 看到一些红点 这就是零宽隐写

零宽隐写
零宽隐写是一种利用不可见不可打印但真实存在的Unicode零宽度字符的隐写技术。
零宽度字符是一种在视觉上不占空间 但在计算机中的确存在且占据字符位置的Unicode控制字符。

不会在网页或文本编辑器中显示,但是可以被复制粘贴存储和程序读取。
零宽隐写通过不同的零宽字符代表二进制位0/1或者摩斯密码·/-等编码单元 把隐写内容嵌入到一段看似正常的公开文本中
1.把那段话复制到cyberchef 可以看到一些红点

2.配方使用Escape Unicode Chaecaters
在输出可以看到\u200B``\u200C``\u200D之类的零宽字符 记下出现了哪些零宽字符
3.把那段话复制到在线网址右边的红框里
https://330k.github.io/misc_tools/unicode_steganography.html

4.按照第二步出现的零宽字符在Zero Width Characters for Steganography:
里面勾选出现的零宽字符 就像这样

5.获得隐写内容

P@ssW0rd 1s th3 md5 v4lue 0f th3 w0rd "t1me"
于是我们给”t1me“转md5

eeb7ac660269f45046a0e8abaa51dfec
这个应该是压缩包的密码 用密码解压

用软件everything查找文件名 找到.git
**cd C:\Users\13964\Desktop\.git**
**git log**
查看git仓库的提交历史

看一下日志
19:26:41 lost my treasure 创建仓库 可能是应该寻宝游戏的开始
19:28:27 welcome to c5im club 加入了c5im俱乐部
19:28:44 hope you will have fun here开始游戏 玩的开心
**git reflog**
这是一条非常强大的git命令 记录了head指针的所有移动历史 就算是删除 也能找到痕迹

my treasure是关键线索
d0cf66f HEAD@{5}: commit: my treasure是一条被覆盖或者删除的提交
尝试恢复它
**git show d0cf66f**

原来的avatar.jpg被删除了 但不重要
创建了一个新文件dora 重要
git checkout d0cf dora报错
注意切换到正确的工作目录
.git是git的元文件仓库,不包含真实文件
到父目录即可
**cd C:\Users\13964\Desktop**
**git checkout d0cf dora**(提交哈希的四位前缀d0cf即可)

得到一个被损坏的文件名为dora的文件 放进010
这里明显有缺失 补全gif文件头也就是gif89 另存为dora.gif

得到gif动图 感觉后面的画面有帧延迟

考虑帧延迟隐写 运行探测脚本
1 | from PIL import Image |


共59帧 最后几帧的duration是:1030 970 1080 1020
都是10的倍数 于是尝试除以10得到 103 97 108 102
这些字母在ASCII表里对应字符是
chr(102 108 97 103)='flag'
于是了解到该题是通过修改gif动画的帧持续时间来隐藏flag

1 | from PIL import Image |

flag{R3ad1ng_7he_wh1sper5_0f_7ime}