这是一篇超全面的网路安全CTF学习干货
网路安全CTF(CaptureTheFlag)夺旗赛,起源于1996年DEFCON全球黑客会议,在网路安全领域食指的是网路安全技术人员之间进行技术竞技的一种赛事方式。
CTF大赛涉及各类安全领域,如网路功击、密码学、逆向工程、Web安全等,参与者通过解决一系列安全挑战来获取旗帜(flag)并博得大赛。
CTF大赛设有多个题目,每位题目代表一个安全挑战。这种题目可能要求参赛者进行逆向工程揭秘、网络合同解析、漏洞借助、编程等。
每位题目都隐藏了一个旗帜(flag),参赛者须要通过技术手段获取这种旗帜。一般旗帜是一个特定格式的字符串(比如,flag{example_flag}),参赛者获取旗帜后递交给平台进行得分。
CTF大赛以得分为根据,参赛队伍按照解决问题的数目和难度获得相应的得分。一般有一个排名榜会实时显示每位队伍的得分情况。
目前国外比较小型的CTF大赛,有TCTF,XCTF,AliCTF,XDCTF,HCTF,ISCC等。

CTF有什么大赛模式?
解题模式(Jeopardy):题目主要包含逆向、漏洞挖掘与借助、Web渗透、密码、取证、隐写、安全编程等类别。在解题模式CTF赛制中,参赛队伍可以通过互联网或则现场网路参与,这些模式的CTF大赛与ACM编程大赛、信息学奥赛比较类似,以解决网路安全技术挑战题目的分值和时间来排行,一般用于在线选拔赛。
攻守模式(Attack-Defense):在攻守模式CTF赛制中,参赛队伍在网路空间相互进行功击和逼抢,挖掘网路服务漏洞并功击对手服务来得分,修复自身服务漏洞进行防御来防止丢分。攻守模式CTF赛制可以实时通过得分反映出联赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网路安全赛制。
混和模式(Mix):结合了解题模式与攻守模式的CTF赛制,例如参赛队伍通过解题可以获取一些初始分数,之后通过攻守对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混和模式CTF赛制的典型代表如iCTF国际CTF大赛。

新人出席CTF有什么益处呢?
参与CTF大赛可以促使个人成长,为网路安全领域的职业发展打下坚实基础。有过相关经验,获得好成绩,一定是才能为自己加分的。
第一、能够学习和增强安全技能:通过挑战不同类型的安全问题,参赛者可以提升自己在各个安全领域的技能和知识。
第二、能够获取实战经验:CTF大赛提供了一个模拟实战环境,让参赛者才能在安全挑战中应用所学知识,锻练实际操作能力。
第三、能够理解团队合作:CTF大赛一般以团队方式进行,促使了队伍成员之间的合作和交流,增强了参赛者的团队协作能力。
第四、善于发觉安全漏洞:通过解决题目,参赛者可以学习到各类安全漏洞和功击技术,加深对网路安全的理解。

这么新人要如何学CTF?
首先,你须要了解CTF主要考什么内容。
MISC(安全杂项):全称Miscellaneous。题目涉及流量剖析、电子取证、人肉搜索、数据剖析、大数据统计等等,覆盖面比较广。
PPC(编程类):全称ProfessionallyProgramCoder。题目涉及到程序编撰、编程算法实现linux 栈溢出攻击原理,算法的逆向编撰,批量处理等。
REVERSE(逆向):全称reverse。题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功力。须要把握汇编,堆栈、寄存器方面的知识。
PWN(溢出):PWN在黑客俚语中代表着攻陷,取得权限,在CTF赛事中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出、堆溢出。
WEB(web类):WEB应用在明天越来越广泛,也是CTF夺旗大赛中的主要题型,题目涉及到常见的Web漏洞,例如注入、XSS、文件包含、代码审计、上传等漏洞。这种题目都不是简单的注入、上传题目,起码会有一层的安全过滤。
CRYPTO(密码学):全称Cryptography。题目考察各类加揭秘技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。
STEGA(隐写):全称Steganography。题目的Flag会隐藏到图片、音频、视频等各种数据载体中供参赛选手获取。载体就是图片、音频、视频等,可能是更改了这种载体来隐藏flag,也可能将flag隐藏在这种载体的二补码空白位置。

基于以上怎样学习呢?
先了解基本网站构架、基础网站开发原理,基础的前后端知识,才能让你以后的漏洞学习畅通无阻。内容包括:
1、前端三要素:html、css、js是被浏览器解析的代码,是构成静态页面的基础。也是后端漏洞如xss、csrf的基础。你要做到就能写出简单表单linux 栈溢出攻击原理,才能通过js获取DOM元素,控制DOM树即可。
2、apache+php:通过apache+php感受一下网站前端的工作,顾客端浏览器通过恳求apache服务器上的php脚本,php执行后生成的html页面返回给浏览器进行解析。这个模块你须要了解基本网站原理,了解php基本句型,开发简单动态页面。
3、mysql:这是一款典型的关系型数据库,通常来说,大部份网站就会带有数据库进行数据储存。这个模块主要是能否用sql句子实现增删改查,但是能用php+mysql开发一个增删改查的管理系统。
4、python
搞安全常常须要写一些脚本或工具来进行例如密码爆破、目录扫描、攻击手动化等操作,须要一个便捷且趁手的编程语言。你须要了解python基础句型,才能用python爬取网站上的信息(requests+BeautifulSoup+re)
5、burpsuite(必备的渗透工具)
重点学习Proxy、Repeater、Intruder三个模块中标麒麟linux,分别用于抓包放包、重放包、爆破初步使用即可。才能用burpsuite抓包改包、爆破用户名密码。
6、SQL注入
才能手工注入出任意表的数据linux内核,熟悉三种盲注的手法,才能通过sql注入实现任意文件读取和任意文件写入,才能自己编撰一个不含sql注入的查询功能。
7、文件上传
会写php的webshell,明白webshell的原理,熟悉常见的文件上传绕开方式(如过后缀检查、过文件头检查、过MIME类型检查),才能自己编撰一个不含漏洞的上传功能。
8、其他漏洞
以下四个为中期要把握的漏洞
命令执行(RCE):php常见的代码执行(eval)、命令执行(system)函数
文件包含:file合同、php伪合同的借助
XSS:通过XSS获取用户cookie
CSRF:通过csrf让用户点击恶意链接就触发敏感操作

推荐学习途径
sqlmap:sql注入利器,有余力可以去瞧瞧它的源码,学习一下大鳄进行sql注入并把它手动化的思路
buuctf:真题练习
upload-labs:几乎囊括所有上传漏洞类型
webshell管理工具:蚁剑
ctfhub:可以很便捷的查看近来举办的ctf比赛
CTF复现平台:BUUCTF、CTFHub、BugKu、Pwnable
