经常被问到类似的问题:CTF究竟该如何入门。其实这个问题问我并不合适,我也不是一个老赛棍,我和CTF的交集最多的大概是:很多CTF题目会直接或间接使用到我曾提到过的一些小技巧,我们称之为Tricks。
我觉得,入门CTF大概需要掌握下面这些能力:
扎实的基础知识
快速的学习能力
一定程度的脑洞
必不可少的实战经验
扎实的基础知识
这一点肯定很好理解,想在任何一个领域取得成功,都必须要掌握那个领域的知识。
这里所说的基础知识主要有哪些呢?
计算机网络
操作系统
编译原理
数据结构与算法
一门以上的编程语言
…等等其他
上面这些内容其实就是大学计算机专业的核心课程,正常来说,一个计算机相关专业的学生,应该都学过这些知识。
当然,据我的观察,包括我自己在内,大多数大学生都不会在课堂上认认真真地学完这些课程,另外很多学校课堂的内容其实也略显过时。
不过,你心里必须对这些个基础课程内容有个谱,至少最简单的一些知识你得了解吧。比如TCP和HTTP协议、Linux系统使用和内部常见的原理、词法分析和语法分析、树的遍历方式、排序算法、加密算法等等,这里就不再举例了。
这些知识其实和CTF没有直接关系,计算机专业的东西如果想学好,这些都是必不可少的。
快速的学习能力
这一点就慢慢开始和CTF有关了,因为打CTF其实是个极其需要学习能力的工作。
为什么呢?因为现在CTF题目的同质化程度越来越高,赛棍们打比赛经常会发现,诶,好像这个题和以前做的某个题目差不多,就是改了下什么什么。
这也不能全怪出题人,毕竟这个世界上的方向就那么多,就跟推理小说中的诡计一样,用完了就是用完了。
当然,知识其实是无限的,只是发现新方向的难度越来越大了。如果你经常参与一些国际大型赛事,比如说长亭科技举办的Real World CTF,你会发现你还是总能发现一些新的套路。
其实很多出题人会通过找一些新的攻击面和一些很少被人接触过的知识来出题,这样的题目质量的确会高一些。
那么,你作为一个进阶级赛棍,你参与这种国际比赛遇到以前没接触过的知识应该怎么办?
大部分情况下你都需要在打比赛的那短短数小时之内快速入门这个新的领域,不管是一门新的编程语言,还是一个新的协议。这就极其考验参赛队员的学习能力了。
学习能力有一部分是天赋,但是绝大多数情况下还是后期可以锻炼的。比如,如果你具有以下优点,你的学习能力将会很强:
快速的英语阅读能力
熟练掌握搜索引擎使用技巧,能快速找到你想要的资料
很强的源码理解能力
快速的英语阅读能力,会对你学习一个新知识起到至关重要的作用,毕竟世界上绝大多数编程语言、工具、操作系统、RFC都是英语编写的,更别说CTF里面可能出现的小众方向。网络上的中文资料普遍存在过时、片面等问题,无法系统化地让你理解你需要的知识本质。
熟练的搜索引擎使用技巧,也是让你快速入门一个新东西的必备技巧。你在使用一个新东西的时候,免不了遇到很多问题,比如编译出错、运行不起来等,你往往会在这些问题上浪费大量时间,而时间是CTF比赛中最重要的资源。其实大部分的问题在网上都能直接找到答案,只不过你需要主动去找到他们,而不是等他们来找你。
很强的源码理解能力,让你能更深入地理解问题的本质。虽然说大部分问题可以直接在搜索引擎获得答案,但如果一个CTF的考点就是一个难题,那么直接搜出答案的概率就很小了。这时候,如果你能多去翻翻文档和源码,你会发现答案并没有那么复杂。
上面三个是我觉得组成CTF学习能力的三大优势。
一定程度的脑洞
脑洞这个东西在CTF比赛中也是传统素质之一。有时候我们评判一个CTF题目是否优秀,就看这个题目的脑洞是否恰到好处,最优秀的题目和最优秀的悬疑小说一样,需要一个这样的答案:
既在意料之外,又在情理之中
意料之外在于,题目的考点是大部分人没想到的;情理之中在于,现实生活中确实可能出现这样的问题。
这样的题目能让参赛者学到知识,又能体现出出题人的水平。
所以,为了做出这样的题目,参赛者也需要具有一定程度的脑洞,你需要能够想到其他人想不到的一些点,这些点也许连出题人也没想到,用这些出其不意的方式作出的题目,我们一般称之为“非预期解”。
必不可少的实战经验
上面说的三点,其实大多数情况下都是用来应付一些高级别的比赛的,在大一大二的时候,你能遇到更多的其实是一些入门级比赛。
很多入门级比赛有一个特点,就是题目的相似性极大。当然这不能说明这个比赛的出题人水平就很烂,有时候出题人在出题的时候就会考虑到这个比赛的受众,如果面向的是大一新生,不可能出几道国际比赛水准的题目吧。
所以,对于初入门的新人来说,做题的经验极为重要,这和高考一样,只要你能刷遍天下所有的题目,虽不说一定考得上清华北大,至少考个985211没任何问题了吧。
那么,有哪些现成的比赛题目可以做来试试呢?
https://code-breaking.com 这是我们『代码审计知识星球』在2018年推出的一个比赛,所有的题目开放源代码,适合Web方向的学习者学习
https://www.wechall.net
https://hackme.inndy.tw
https://pwnhub.cn
https://adworld.xctf.org.cn
太多了,这里不再一一列举。
总结
除了上述的几个硬能力,想学习好CTF还可以有一些捷径,比如:
加入一个氛围较好的社群,有讨论才有进步
跟老司机一起打比赛,增进感(ji)情(qing)也增加技术
找到一个好的系统的学习资料
正好,今天,由国内老牌CTF战队FlappyPig撰写的新书《CTF特训营:技术详解、解题方法与竞赛技巧》上线京东预售了,据我所知这应该是国内第一本以CTF知识为主的图书。如果你想系统性地学习CTF相关知识,推荐阅读本书:
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
最后给大家分享我自己学习的一份全套的网络安全学习资料,希望对想学习 网络安全的小伙伴们有帮助!
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
【点击领取】网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。【点击领取视频教程】
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】
(都打包成一块的了,不能一一展开,总共300多集)
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享