
CTF赛事发布网站是我一直想系统整理一篇的东西。原因很简单CTF这个圈子里真正拉开选手差距的很多时候不是做题手速而是信息获取能力。有人每周能稳定参加两到三场适合自己水平的比赛有人一整个月都在等群里转发链接等到的又常常是比赛已经结束、只能看Writeup的残局。开头我先说清楚这篇不只是罗列一堆平台地址而是把“怎么找比赛、怎么跟赛程、怎么备赛、怎么复盘”这一整条链路讲透让零基础的朋友看完就能照着操作不需要再东拼西凑翻攻略。1. 为什么需要一个CTF赛事发布网站从赛事信息渠道说起1.1 CTF赛事形态那么多信息却散在各处CTFCapture The Flag从赛制上大致分成几种解题模式Jeopardy最常见主办方放出一批题目按Web、Pwn、Reverse、Crypto、Misc等分类选手逐个解出并提交Flag获得分数攻防模式Attack-Defense更激烈每支队伍有自己的靶机既要修补自己的漏洞又要攻击别人的机器还有混合模式比赛现场往往配合演讲、演练等环节。不同赛制适合不同阶段的人对于刚入门的朋友我强烈建议先找解题模式的赛事因为它对队友协作要求低单人也可以慢慢试。但这里有个非常现实的问题CTF赛事的主办方太分散了。有高校办的、有企业办的、有战队自发组织的还有各类安全社区定期搞的“联赛”。这些比赛信息过去散落在各个官方网站、QQ群公告、公众号推送里很多时候你盯着一个群却漏掉了另一个平台的同一天比赛。早期我也踩过这个坑。我刚开始玩CTF时加了大大小小十几个技术群每天刷消息以为这样就能拿遍所有赛事信息。结果某天看到一个熟悉的大赛开赛才发现报名入口在另一个平台而我根本没有关注。后来我彻底想明白了一件事CTF圈子里的“信息差”比“技术差”更耽误人。如果你连比赛在哪、什么时候开始、报名规则是什么都不知道刷再多题也很难形成稳定的实战节奏。1.2 赛事发布网站到底帮你解决了什么专业的CTF赛事发布网站本质上是把散落的信息集中成一个“公告板”。它的核心价值可以拆成四块时间集中一个页面就能看到未来几十场比赛的时间、时长和形式不用挨个官网去刷。规则前置报名方式、赛制说明、参赛对象、是否允许单人参赛这些关键信息通常写得很清楚。含金量参考很多平台会根据比赛的历史评分、参赛队伍规模、题目质量给出一个参考权重帮你判断比赛值不值得去。赛后沉淀比赛结束后活跃平台会把题目、官方源码、选手Writeup汇总起来方便后续补题和复盘。对于零基础的人第一步其实不是刷题而是先有一个稳定能看到比赛的主渠道。有了渠道练习才有对象进步才有节奏。1.3 什么样的人最需要这类网站我接触过的朋友里有三类人最需要认真用赛事发布网站完全零基础的新人不知道CTF该怎么练也不知道去哪找比赛。一个聚合平台能让他们快速进入“以赛代练”的正循环。有一定基础但没比赛打的人单人刷题容易进入瓶颈期需要定期比赛检验水平赛事平台能提供持续稳定的赛程。带团队、想培养新人的队长新人培养最头疼的是“训练内容与实战脱节”把赛事日历同步给队员让每个人按周期参赛比队长自己出题效率高得多。2. 常见CTF赛事发布平台逐个拆解以及怎么搭配使用2.1 CTFtime全球赛事日历的默认选项在CTF圈子里CTFtime几乎是默认的赛事发布平台。它收录的比赛覆盖全球范围每个比赛页面都会列出开始时间、持续时长、形式、参赛限制和报名入口。它还会按队伍维度做积分排名很多国际强队会在这里记录自己的参赛履历。对新人来说CTFtime的操作逻辑很简单注册账号、创建或加入一个队伍然后去“Upcoming”列表里翻比赛看到合适的直接点进详情页里面有主办方的官网链接和报名说明。需要注意一个最基础也最容易看错的地方——CTFtime默认显示的时间通常是UTC新手经常把比赛时间换算错导致开赛时人在吃饭题目已经放出来四十分钟了。我自己的习惯是看到中意的比赛后立刻在自己手机日历里建一个“比赛开始”事件把时区换算好再设一个提前两小时的提醒。2.2 国内平台CTFHub、NSSCTF等怎么用国内能看赛事信息的地方不少但很多平台不只是“发布信息”还承担了题库、赛题复现、Writeup沉淀的功能这一点比单纯日历更重要。CTFHub是我很推荐新人优先接触的平台之一它更像一个“训练基地”。上面有大量按分类整理好的题目也有部分赛事的报名信息和赛题复现入口。对于还没到能打高难度比赛阶段的人先在这个平台把基础题型刷一遍比直接硬刚国际大赛要合理得多。NSSCTF也是类似的思路界面比较清爽题目的覆盖面广很多国内比赛的题目和官方Writeup赛后会同步到这里。它的价值在于“赛后补课”——你在某场比赛里卡了三个小时的题比赛一结束就能上去看别人的解法然后自己复现一遍。另外还有一些战队自发维护的平台比如WC平台会定期办线上联赛赛程固定、时间规律。这种“固定饭点式”的比赛特别适合新手建立节奏不需要天天刷信息只要记住每周大概什么时间有赛准时参加就行。2.3 平台怎么搭配一张表说清选型信息源核心功能我建议的使用方式适合场景CTFtime全球赛事日历、队伍排名每周翻一次订阅日历盯时区找正式比赛、看国际大赛CTFHub题库、赛题复现、部分赛事信息日常刷题、赛前热身基础训练、专项突破NSSCTF题库、Writeup沉淀、国内赛事复现赛后补题、学习他人思路复盘提升、查缺补漏WC等战队联赛平台固定周期线上赛按周期参赛稳定练手建立比赛节奏公众号/交流群国内赛事通知、主办方公告作为补充信息源不依赖接收临时赛和邀请赛信息这个搭配的核心思路是一个日历类平台管“什么时候有比赛”一两个题库类平台管“平时练什么”一两个联赛平台管“固定节奏实战”再加几个公众号和群作为兜底。信息源不是越多越好而是越少越好但每个都要稳定。2.4 我不建议“哪个比赛都报名”很多新人刚发现赛事网站时容易走另一个极端看到比赛就报名一周报了三四场结果每场都只能打半天最后没有一场深入参与。比赛数量不等于实战经验你需要的是“完整走完一场比赛”的经验。我的建议是零基础阶段优先选标注“新手友好”“入门赛”“高校公开赛”的比赛有一定基础后再尝试中大型比赛国际顶级赛事可以报名进去当“气氛组”感受题目风格和排行榜压力但不要期待拿奖。把每一场比赛当作一次完整的项目去做比报名十场却中途放弃要有价值得多。3. 把赛程搬进日历订阅、推送和每周固定节奏3.1 日历订阅是最值得花十分钟做的操作如果你只用一次CTFtime我最推荐的功能不是翻比赛列表而是“日历订阅”。CTFtime提供iCal格式的日历地址你可以把它添加到手机日历或电脑日历客户端里。添加之后所有收录的比赛会自动变成日历里的日程而且通常能直接换算成本地时区省掉手动换算的麻烦。操作流程不复杂在CTFtime页面找到日历导出入口复制iCal链接然后到日历应用里选择“添加订阅日历”把链接粘贴进去。之后请务必做一件事为订阅的这个日历单独设置“提前两小时提醒”。很多平台比赛在开始前会放出题目提前两小时你还在群里聊闲天提醒一响就可以去检查登录状态、看比赛公告、备好工具。3.2 公众号、群组和代码托管仓库的推送怎么组合国内外很多比赛的报名通知通过公众号和官方群发布。我不建议你加太多群否则消息一多就会漏掉真正的比赛公告。实际操作中我会保留两类群一类是比赛官方群确保能收到签到和规则变更另一类是战队或熟人组队群用于临时找人补位。其余技术交流群都设成免打扰。代码托管平台上有些热心人维护了赛事信息收集项目比如定期更新的CTF赛事列表、练习平台导航等。你可以给这类仓库点个收藏偶尔点开看更新即可不需要天天盯。3.3 每周固定节奏模板时间动作说明周一复盘上周比赛写Writeup、补做没解出的题周二刷基础题挑一个弱项类别集中练周三查看下周末赛事打开日历标记要参加的比赛周四准备工具与资料升级工具、整理常用脚本周五确认报名与队伍和队友确认角色分工周六正式参赛按赛前清单执行周日简单总结整理Flag、记录卡住的点这个模板不是死规矩核心目的是让“比赛”成为循环的一环而不是偶尔发生的事件。哪怕你每周只能打半天比赛也比你一个月才碰一次比赛要更有连续性。3.4 时区换算和报名截止的坑再提醒一次举个具体的例子某场48小时比赛显示UTC时间周六12:00开始换算成国内时间就是周六20:00开始持续到周一20:00结束。很多新手以为是周日20:00结束结果周日晚上就放松了白白浪费了最后一天能冲刺的题目。报名截止时间也要看仔细。很多比赛报名截止在开赛前24到48小时并不是开赛前还能报名。我的习惯是决定参赛后立刻把报名流程走完然后在日历里再加一个“报名截止”提醒而不是等到比赛前才发现进不去。4. 从看到比赛到下场开打零基础完整动作清单4.1 赛前一周账号、队伍与工具三件套赛前要做的事按优先级排第一是账号第二是队伍第三是工具。账号方面建议把常用平台都注册好邮箱完成验证。零基础新人最容易出问题的就是比赛当天才注册平台账号结果邮箱验证邮件迟迟没收到或者平台要求实名信息绑定临时填又填错开赛后半小时还在折腾登录心态直接崩了。队伍方面两到四个人一队比较合适。人太少遇到Pwn和Reverse同时卡住时没人换脑子人太多解题过程容易互相干扰。队伍约定一个统一的昵称前缀方便赛后排名时认出自己人。如果不认识任何人也可以先以个人身份参赛有些比赛支持单人。工具方面提前把系统环境折腾好该装的虚拟环境、抓包工具、二进制分析插件、密码学脚本库都先装完。我的建议是专门建一个目录放常用工具和脚本比赛时直接调用而不是当天临时下载。4.2 赛中的时间分配与选题策略比赛开始后前30分钟不要急着埋头做题先做一件事把题目列表完整浏览一遍记录每道题的类型、题目名称、分值和当前解出人数。解出人数是一个非常关键的指标人数越多的题往往越偏签到和简单应用适合先做人数为0的题除非你有明确思路否则先放着。具体选题策略上我个人的经验是先做Misc和Web里的签到题积累信心和基础分。再尝试Crypto和Reverse里的简单题这类题有时只是某个工具使用的问题。Pwn尽量在有队友一起讨论时做一个人零基础硬啃容易耗掉大量时间。每道题如果卡了20分钟还没有突破性进展先把思路写到笔记里跳下一题。比赛结束后再回来补。还有一点比赛中途要养成随时记录的习惯用了什么命令、看了什么文件、试过哪些思路都写进本地笔记。这不是浪费时间而是赛后复盘最宝贵的素材。4.3 赛后复盘把一次比赛变成两次提升很多新人比赛打完就扔这是最大的浪费。一次比赛的价值一半在现场一半在复盘。复盘的具体步骤我建议是这样比赛结束当天趁记忆新鲜把每道做过的题目的解题过程写出来。把比赛中的题目文件、源码、Flag记录归档到本地目录。去平台看官方Writeup和社区题解找出自己卡住的那一步到底缺了什么知识。把新知识点整理到自己的知识库按类型分类而不是堆在一个随手记事本里。一周之后把当时没做出的题重新做一遍只看题目不看题解。很多人觉得第5步多余其实这一步最关键。只看懂题解和真正能自己解出来中间差的是动手能力不补上这一块下一场比赛还会卡在同样的地方。4.4 一份48小时参赛时间线示例时间节点动作周五晚上确认报名成功检查比赛群规则睡前完成环境检查周六07:30起床吃早餐打开比赛页面测试能否登录周六08:00比赛开始前30分钟扫题记录题目类型和难度周六上午主攻Misc和Web签到题稳定拿分周六下午尝试Web和Crypto基础题保留每道题的思路笔记周六晚上与队友一起讨论Pwn和Reverse尝试能解出的部分周日白天回去补未完成的题优先做解出人数较多的题目周日19:30最后30分钟停止答题整理Flag和提交记录周日20:00比赛结束简单记录当晚总结接下来一周写Writeup归档题目补做不会的题这个时间线最大的好处是它让第一次参赛的人知道“什么时候该干什么”而不是被题目拖到比赛结束。5. 踩过的坑和绕过的弯路平台之外的真实比赛经验5.1 报名成功不等于能参赛我遇到过最无语的一次经历某场比赛在赛事平台上点击了“参加”但比赛详情里还要求到主办方官网注册账号并且加入官方群提交队员信息才算有效报名。我们当时只完成了第一步开赛后一直进不了题目系统找了半天才发现漏了注册链接。这个坑其实是信息获取习惯的问题。以后每次看到比赛我会把详情页从上到下完整读一遍尤其是“Registration”和“Important Notes”这两块。零基础朋友请记住赛事平台只是信息入口不是唯一报名通道最终一定要跳到官方页面完成全部流程。5.2 时区换算和结束时间说再多也不过分有一次我们打欧洲的比赛平台显示结束时间是周日深夜我以为是周一早上结果周日晚上早就该结束了。队友们还在群里问“是不是平台又延长了”其实只是我们把时区算错了。避免这个问题的土办法很简单看到比赛后先在日历里添加三个事件——报名截止、开赛时间、结束时间——全部换算成本地时区并设置不同的提醒。别靠脑子记你的脑子还要留给题目。5.3 盲目刷比赛不如有选择地参赛有段时间我给自己定了“每周必打一场比赛”的目标结果发现很多周末打的是自己不熟悉的赛制题目风格完全不对路整场比赛打下来很疲惫收获却很少。后来我调整了筛选标准主要看三点赛制是不是解题模式、题目里有没有我最近在练的类别、比赛时长是否适合我的周末安排。这场比赛适合“体验和练习”我就投入参加这场比赛明显是高难度的国际赛我就报名进去看题但不强求成绩。选比赛和选书一样超过能力太多会打击信心低于能力太多会浪费时间最好的状态是“略高于你当前水平”。5.4 复盘不要只抄答案我看过很多人所谓的复盘就是把官方Writeup复制到自己的笔记里然后就没有然后了。这种复盘对实战能力提升很有限。正确做法是“关掉题解自己再推一遍”。你不一定要把题目完整解出来但至少要把解题思路的关键节点自己复现一次比如某一步的意图是什么、这个命令为什么要这样用、Flag格式为什么是那种。只有自己动手走一遍才算是真正吸收了。6. 以赛代练怎么持续下去资源沉淀与小分队配合6.1 个人资源库怎么建打了几场比赛之后你的本地方目录里会攒下一堆题目文件、解题脚本、Flag记录和比赛公告。我建议按题目类型建目录结构比如web、crypto、reverse、pwn、misc再加上一个archive目录放比赛完整目录。每个比赛目录里放当时所有自己写的脚本、下载的题目文件、比赛截图和一句话总结。不要小看这个整理动作。半年前你解出来的一道题半年后你可能完全忘了当时用什么工具、什么思路翻一下自己的比赛目录就能快速回忆起来这比去网上重新搜题解高效得多。6.2 小分队里的赛事分工如果你们是组队参赛我建议队里固定两个角色第一个是“赛程看门人”负责每周浏览赛事平台把可能参加的比赛同步到队伍日历并在报名截止前确认所有队员的报名状态。第二个是“复盘整理人”负责赛后把题目文件、Writeup、比赛截图归档定期整理一份“近期薄弱点清单”分发给队员。这两个角色不需要固定人选可以轮流当。它们的价值在于把“参赛”这件事变成一个有流程的团队动作而不是指望某个人赛前想起来才去报名。6.3 我理解的“入门到精通”如果非要用一句话概括我的理解是入门拼的是信息获取和坚持出赛精通拼的是复盘深度和专项积累。你不用一开始就觉得自己什么都不会先把平台摸熟把一场比赛完整跑通把不会的题补上形成一个小小的“练、赛、复盘”循环。这个循环转上十几轮之后你会发现自己看题目的方式已经完全不同了。最后分享一个我坚持很久的习惯每周日晚固定花十分钟打开赛事日历把下一周的比赛看一遍标记一至两场最适合当前水平的。选好了就设置提醒然后该刷题刷题该写Writeup写Writeup。这十分钟看着不起眼却让训练和实战形成了一个稳定的闭环。如果你刚开始接触CTF不用急着收藏一大堆平台链接先选一个主渠道参加下一场周末赛把流程完整跑一遍比囤任何攻略都重要。