本章目录(4)On this page (4)
  1. 条件不一样
  2. 目标不一样
  3. 时间尺度不一样
  4. 那 CTF 有什么用
security

学 CTF 和做渗透测试是两件事

一个在限定条件里找 flag,一个在开放条件里找授权。技能重叠,判断方式完全不同。

CTF 打得好,不代表能做好一次渗透测试。反过来也成立。

这两件事共用的技能很多——注入、反序列化、提权、看代码。但决定结果的不是技能,是判断方式。

条件不一样

CTF 的题目,漏洞一定存在,通常只有一个,环境是专门为你准备好的。你不需要问「这里有没有问题」,只需要问「问题在哪」。

真实系统里,漏洞可能一个都没有,也可能有十七个。你花三天排除掉十五个方向,最后发现能打的只有一个弱口令——这才是常态。

前者考「能不能想到」,后者考「值不值得继续」。

目标不一样

CTF 的目标是 flag。拿到就结束,过程中把环境搞崩了也无所谓。

实战的目标是「证明影响」,而且必须能复现、能解释、能写进报告让客户修。一个 RCE 在 CTF 里是终点,在实战里只是「然后呢」的开始——然后能不能读数据、能不能横向、影响多少业务。

这个差别直接决定了打法。CTF 里可以为了拿 flag 用最脏的方式;实战里最脏的方式往往不能用,因为它会影响业务,或者超出授权。

时间尺度不一样

CTF 四小时八道题,节奏是冲刺,卡住就换题。

实战五天一个系统,节奏是排查。大部分时间在排除可能性:这个端口不是、这个版本没洞、这个接口要登录。真正拿下的那一刻,占整个过程不到十分之一。

习惯冲刺的人,做实战容易急躁——第一天就想出结果,出不来就开始怀疑自己。

那 CTF 有什么用

练单点判断的速度。

真实项目里一个注入点可能一周才遇到一次,靶场里一晚能刷二十道。这种密度的重复,是唯一能把「看到这个特征就想那个方向」变成本能的方式。

用它练手,别用它代替判断。

一个具体的例子:CTF 里看到 ?id=1,第一反应是构造 payload。实战里看到同一个参数,第一反应应该是——这个参数在不在授权范围里,打它会不会影响业务。

顺序不同,结论可能完全相反。

题库和思路整理在 CTF 那一章。