直接晒一下我当时的现场状态:打开攻防世界 misc 方向的“选手投递”,看到题面只有一句话,附件一个压缩包,很多第一次刷题的人都是顺手解压、拖进工具、扫一遍,然后卡死在原地——flag 就藏在那儿,你却看不见。这道题之所以叫“看不见的一百分”,就是因为它的答案永远不在你第一眼能看到的地方,后来我在好几个 CTF 训练平台刷到同类型的题,包括 bugku misc、buuctf 里那些签到题,思路其实都是一套。这篇就把我踩过的坑和完整解题思路都展开聊清楚,不给你直接报答案,但保证你读完就知道这类题应该怎么一步步扒干净。
这道题适合谁?刚入 CTF、misc 方向不知道怎么入手的新手,以及已经刷了不少题但总觉得“漏了什么”的人。它解决的问题不是某一个工具怎么用,而是面对一个完全陌生的附件,你应该按什么顺序、用什么方法、怎么判断“这里有问题”然后再往下深挖。对,misc 的核心从来不是你会多少神器,而是你能不能从任何杂乱的输入里找到那一小段“不该存在”的数据。
1. 题目初见:从“一百分”入手拆题干
第一次打开这道题的时候,我的第一反应其实和大多数人是反着来的。大多数人先看附件,直接把文件名、压缩包、文件类型丢进工具链里跑一遍,直到所有工具都扫不出来,才回头重新读题面。这就是“看不见的一百分”的第一层陷阱——题面这句话本身就是信息,而且很可能是整套题里最直接的提示。
1.1 题面里的隐藏线索怎么说
“选手投递”这个名字本身就有说法。结合攻防世界 misc 方向的出题习惯,这类题名往往是一个场景化的包装,对应的就是“某选手往某个地方投递了文件”,那么投递的方式、投递的文件载体、投递后的状态,都可能是考点。而“看不见的一百分”这句话,则是在提醒你:这题的分数就在那儿,但通过正常的查看方式,你看不到它。
如果你在实战里拿到这类描述,我的建议是先把题面拆成几个关键词,逐一对号入座:
- 投递:可能跟文件附加、隐写、追加数据有关,也可能跟流量、协议、上传操作有关。
- 看不见:优先怀疑隐藏属性、隐藏文件、隐写、文件结构异常、权限或类型伪装。
- 一百分:说明 flag 的形态是完整且唯一的,不会出现半截、多解的情况,锁定“只有一个正确答案”的搜索思路。
这种拆法不是玄学。CTF 的题目描述其实是在给你一个“语义索引”,每句话都在圈定排查范围。就拿“看不见”来说,既然题面已经说了看不见,那大概率就不是明文存储,也不是简单改后缀就能看到的东西,而是需要你借助工具或脚本去“看”底层数据。
1.2 附件和压缩包的第一轮检查
先不急着上高级工具,把最基础的动作做一遍。这里有一个很多人容易忽略的点:拿到一个未知附件,第一件事不是解压,而是先看文件本身到底是什么类型。
Windows 下,后缀名是骗人的,但是攻防世界里大部分环境是 Linux,直接跑一句 file 就能看到真实类型:
bash复制file 附件文件名
如果返回的是一张图片,那就进入图片隐写的排查流程;如果返回的是一个 Zip 压缩包,哪怕后缀名写的是 .jpg,也要立刻把它的扩展名改成 .zip 再尝试解压。这种“伪造后缀”的思路在 misc 题目里出现得非常频繁,尤其是攻防世界的早期题目,几乎就是必考项。
压缩包解开之后,不要急着找 flag 文件。先把所有文件列出来,看有没有隐藏文件开头的点号文件,看文件大小有没有异常——那些只有几十字节的小文件往往就是藏答案的地方。比如一些题目会把 flag 放在压缩包里的一个 README.txt 里,但注释区、附加数据区里还有一层。
我到这一步的时候,用 binwalk 扫过一遍压缩包,看看有没有嵌套的额外数据:
bash复制binwalk 附件文件名
这条命令干什么用的呢?它就是检测文件里是否存在被追加、拼接、嵌入的“其他文件”。很多“看不见的 flag”其实不是看不见,而是被藏在了一个看似正常的文件尾部,binwalk 扫一遍就能看到偏移量和文件特征。比如你看到一个压缩包解出来只有一个普通的图片,但 binwalk 显示在这个图片尾部还有一个 ZIP 文件或一个文本文件,那就说明答案藏在附加数据里。
我对新手的一个忠告:这些基本功每一样看起来都很简单,但完整走一遍和直接拖进工具是两个概念。工具只能扫你让它扫的东西,而命令行能让你看到每一个文件结构的真实边界。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 图片隐写是重灾区:这一轮必须扒到像素层
从攻防世界到 bugku misc、buuctf misc,图片隐写几乎覆盖了 40% 以上的简单题和中档题。如果你拿到附件后看到一张 PNG 或 JPG,直接 strings 扫一遍、
