这是一篇超全面的网络安全CTF学习干货

  • 作者:
  • 时间:2023-09-28 15:11:08
简介 这是一篇超全面的网络安全CTF学习干货

这是一篇超全面的网络安全CTF学习干货

网络安全CTF(Capture The Flag)夺旗赛,起源于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(编程类):全称Professionally Program Coder。题目涉及到程序编写、编程算法实现,算法的逆向编写,批量处理等。

REVERSE(逆向):全称reverse。题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底。需要掌握汇编,堆栈、寄存器方面的知识。

PWN(溢出):PWN在黑客俚语中代表着攻破,取得权限,在CTF比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出、堆溢出。

WEB(web类):WEB应用在今天越来越广泛,也是CTF夺旗竞赛中的主要题型,题目涉及到常见的Web漏洞,诸如注入、XSS、文件包含、代码审计、上传等漏洞。这些题目都不是简单的注入、上传题目,至少会有一层的安全过滤。

CRYPTO(密码学):全称Cryptography。题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。

STEGA(隐写):全称Steganography。题目的Flag会隐藏到图片、音频、视频等各类数据载体中供参赛选手获取。载体就是图片、音频、视频等,可能是修改了这些载体来隐藏flag,也可能将flag隐藏在这些载体的二进制空白位置。

 

基于以上如何学习呢?

先了解基本网站架构、基础网站开发原理,基础的前后端知识,能够让你之后的漏洞学习畅通无阻。内容包括:

1、前端三要素: html、css、js是被浏览器解析的代码,是构成静态页面的基础。也是前端漏洞如xss、csrf的基础。你要做到能够写出简单表单,能够通过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三个模块,分别用于抓包放包、重放包、爆破初步使用即可。能够用burpsuite抓包改包、爆破用户名密码。

6、SQL注入

能够手工注入出任意表的数据,熟悉三种盲注的手法,能够通过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