大一学信息安全专业,对CTF很感兴趣,应该如何入手?

进入大学后才开始了解到CTF这个东西,觉得很有意思,想要深入学习,但又不知该从那里学起,不知各位能有什么经验看法吗?
关注者
396
被浏览
175,409
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

经常被问到类似的问题:CTF究竟该如何入门。其实这个问题问我并不合适,我也不是一个老赛棍,我和CTF的交集最多的大概是:很多CTF题目会直接或间接使用到我曾提到过的一些小技巧,我们称之为Tricks。

我觉得,入门CTF大概需要掌握下面这些能力:

  • 扎实的基础知识
  • 快速的学习能力
  • 一定程度的脑洞
  • 必不可少的实战经验

扎实的基础知识

这一点肯定很好理解,想在任何一个领域取得成功,都必须要掌握那个领域的知识。

这里所说的基础知识主要有哪些呢?

  • 计算机网络
  • 操作系统
  • 编译原理
  • 数据结构与算法
  • 一门以上的编程语言
  • ...等等其他

上面这些内容其实就是大学计算机专业的核心课程,正常来说,一个计算机相关专业的学生,应该都学过这些知识。

当然,据我的观察,包括我自己在内,大多数大学生都不会在课堂上认认真真地学完这些课程,另外很多学校课堂的内容其实也略显过时。

不过,你心里必须对这些个基础课程内容有个谱,至少最简单的一些知识你得了解吧。比如TCP和HTTP协议、Linux系统使用和内部常见的原理、词法分析和语法分析、树的遍历方式、排序算法、加密算法等等,这里就不再举例了。

这些知识其实和CTF没有直接关系,计算机专业的东西如果想学好,这些都是必不可少的。

快速的学习能力

这一点就慢慢开始和CTF有关了,因为打CTF其实是个极其需要学习能力的工作。

为什么呢?因为现在CTF题目的同质化程度越来越高,赛棍们打比赛经常会发现,诶,好像这个题和以前做的某个题目差不多,就是改了下什么什么。

这也不能全怪出题人,毕竟这个世界上的方向就那么多,就跟推理小说中的诡计一样,用完了就是用完了。

当然,知识其实是无限的,只是发现新方向的难度越来越大了。如果你经常参与一些国际大型赛事,比如说长亭科技举办的Real World CTF,你会发现你还是总能发现一些新的套路。

其实很多出题人会通过找一些新的攻击面和一些很少被人接触过的知识来出题,这样的题目质量的确会高一些。

那么,你作为一个进阶级赛棍,你参与这种国际比赛遇到以前没接触过的知识应该怎么办?

大部分情况下你都需要在打比赛的那短短数小时之内快速入门这个新的领域,不管是一门新的编程语言,还是一个新的协议。这就极其考验参赛队员的学习能力了。

学习能力有一部分是天赋,但是绝大多数情况下还是后期可以锻炼的。比如,如果你具有以下优点,你的学习能力将会很强:

  • 快速的英语阅读能力
  • 熟练掌握搜索引擎使用技巧,能快速找到你想要的资料
  • 很强的源码理解能力

快速的英语阅读能力,会对你学习一个新知识起到至关重要的作用,毕竟世界上绝大多数编程语言、工具、操作系统、RFC都是英语编写的,更别说CTF里面可能出现的小众方向。网络上的中文资料普遍存在过时、片面等问题,无法系统化地让你理解你需要的知识本质。

熟练地搜索引擎使用技巧,也是让你快速入门一个新东西的必备技巧。你在使用一个新东西的时候,免不了遇到很多问题,比如编译出错、运行不起来等,你往往会在这些问题上浪费大量时间,而时间是CTF比赛中最重要的资源。其实大部分的问题在网上都能直接找到答案,只不过你需要主动去找到他们,而不是等他们来找你。

很强的源码理解能力,让你能更深入地理解问题的本质。虽然说大部分问题可以直接在搜索引擎获得答案,但如果一个CTF的考点就是一个难题,那么直接搜出答案的概率就很小了。这时候,如果你能多去翻翻文档和源码,你会发现答案并没有那么复杂。

上面三个是我觉得组成CTF学习能力的三大优势。

一定程度的脑洞

脑洞这个东西在CTF比赛中也是传统素质之一。有时候我们评判一个CTF题目是否优秀,就看这个题目的脑洞是否恰到好处,最优秀的题目和最优秀的悬疑小说一样,需要一个这样的答案:

既在意料之外,又在情理之中

意料之外在于,题目的考点是大部分人没想到的;情理之中在于,现实生活中确实可能出现这样的问题。

这样的题目能让参赛者学到知识,又能体现出出题人的水平。

所以,为了做出这样的题目,参赛者也需要具有一定程度的脑洞,你需要能够想到其他人想不到的一些点,这些点也许连出题人也没想到,用这些出其不意的方式作出的题目,我们一般称之为“非预期解”。

必不可少的实战经验

上面说的三点,其实大多数情况下都是用来应付一些高级别的比赛的,在大一大二的时候,你能遇到更多的其实是一些入门级比赛。

很多入门级比赛有一个特点,就是题目的相似性极大。当然这不能说明这个比赛的出题人水平就很烂,有时候出题人在出题的时候就会考虑到这个比赛的受众,如果面向的是大一新生,不可能出几道国际比赛水准的题目吧。

所以,对于初入门的新人来说,做题的经验极为重要,这和高考一样,只要你能刷遍天下所有的题目,虽不说一定考得上清华北大,至少考个985211没任何问题了吧。

那么,有哪些现成的比赛题目可以做来试试呢?

太多了,这里不再一一列举。

总结

除了上述的几个硬能力,想学习好CTF还可以有一些捷径,比如:

  • 加入一个氛围较好的社群,有讨论才有进步
  • 跟老司机一起打比赛,增进感(ji)情(qing)也增加技术
  • 找到一个好的系统的学习资料

正好,今天,由国内老牌CTF战队FlappyPig撰写的新书《CTF特训营:技术详解、解题方法与竞赛技巧》上线京东预售了,据我所知这应该是国内第一本以CTF知识为主的图书。如果你想系统性地学习CTF相关知识,推荐阅读本书:

另外,如果你的眼界并不止于CTF,你想学习深入网络安全、Web安全知识,也可以点个赞,关注我,也可以关注我的个人公众号:white-hat-note