先交代背景。这两天我陪着一群想入坑CTF的小朋友刷完了青少年CTF S1·2026公益赛,其中有一道杂项题叫“找到呆唯”,让不少人在第一层就卡了半天。题目本身不烧脑,考的全是基本功:文件分离、伪加密识别、流量包分析、图片隐写。但正因为太基础,反而能把没系统练过Misc的人筛下去。如果你刚学CTF,想搞明白杂项题到底在考什么,这道题完全值得当一份入门试卷来拆。
萌新最容易犯的毛病是一上来就乱翻工具,看到图片就用StegSolve,看到压缩包就爆破密码,结果折腾半天什么都没拿到。这道“找到呆唯”最大的价值在于它的通关路径是线性的,每一层都指向下一层,属于典型的“真题串讲”式Misc题:先搞清楚题目要什么,再按文件特征一步步往下走,很多看似复杂的东西其实只要会看文件头、会读协议,就藏不住。
下面我就按照实际解题的顺序,从头到尾把完整思路、工具用法、踩坑点全部捋一遍。你不需要提前会任何高端技巧,只要跟着这个流程走一遍,以后再遇到同类题目,思路自然就通了。
1. 题目拿到手:先按“情报收集”的思路打开
做杂项题的第一步永远是看名字、看描述、看附件,而不是急着去跑工具。“找到呆唯”这四个字本身就是线索:呆唯是什么?稍微对ACG文化有点了解的人都会想到一个留着短发的动画角色。赛题的设计者既然把这个名字放进题面,通常意味着附件里一定存在和人设相关的信息,比如名字、生日、颜色、头发上的发夹形状,这些都可能成为后续压缩包密码或文本隐写的提示。
拿到附件后,我看到是一个jpg文件,名字叫 yui_secret.jpg。很多新手拿到图片就直接开StegSolve,其实顺序错了。你应该先做一轮最朴素的检查,耗时不超过三分钟,但能省下后面大量的试错时间。
第一件事用 file 看真实类型:
bash复制file yui_secret.jpg
正常情况下会输出 JPEG image data, JFIF standard 1.01。如果它输出的是 Zip archive data 或者 PNG image data,说明题目故意改了扩展名,直接改名解压往往就有发现。
接着用 strings 扫一遍可见字符串:
bash复制strings yui_secret.jpg | head -50
strings yui_secret.jpg | grep -i -E "flag|ctf|key|pass|hint|呆唯|yui|birth"
这一步经常能直接看到藏在文件里的纯文本线索。我在这道题里跑完,发现文件尾部附近有 birthday_is_0915 和 wanna_find_me.zip 这两段字面信息。前一段基本把生日密码的范围锁死到“9月15日”相关组合,后一段明显提示文件里还附加了一个压缩包。
再用 binwalk 扫一下文件结构:
bash复制binwalk yui_secret.jpg
输出里除了JPEG本身的段信息外,末尾多了一个偏移量很大的 Zip archive data。到这里,题目第一层的套路已经很清楚了:图片尾部被拼接了一个压缩包,解法就是把压缩包从原文件里分离出来,再去解。这类“图片藏压缩包”的考法在CTF杂项里出现频率极高,原理不复杂,下面单独细
