第1章
CTF简介
1.1 赛事介绍
1.1.1 赛事起源
CTF(Capture The Flag)中文一般译作夺旗赛,原为西方传统运动,即两队人马相互前往敌方的基地夺取旗帜。这恰如“黑客”在竞赛中的一攻一防,因此在网络安全领域中被用于指代网络安全技术人员之间进行技术竞技的一种比赛形式,其形式与内容体现了浓厚的黑客精神和黑客文化。
CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。作为CTF赛制的发源地,DEFCON CTF也成为目前全球技术水平和影响力最高的CTF竞赛,类似于CTF赛事中的“世界杯”。
CTF的大致流程是,参赛团队之间通过攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这串内容称为“flag”。
近年来,随着网络安全越来越受到国家和大众的关注,CTF比赛的数量与规模也发展迅猛,国内外各类高质量的CTF竞赛层出不穷,CTF已经成为学习、提升信息安全技术,展现安全能力和水平的绝佳平台。
1.1.2 竞赛模式
? 解题模式(Jeopardy)
在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与。这种模式的CTF竞赛与ACM编程竞赛、信息学奥赛类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛,选手自由组队(人数不受限制)。题目主要包含六个类别:RE逆向工程、Pwn漏洞挖掘与利用、Web渗透、Crypto密码学、Mobile移动安全和Misc安全杂项。
? 攻防模式(Attack-Defense)
在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击和防守,通过挖掘网络服务漏洞并攻击对手服务来得分,通过修补自身服务漏洞进行防御来避免丢分。攻防模式通常为线下赛,参赛队伍人数有限制(通常为3到5人不等),可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负。这是一种竞争激烈、具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续48小时及以上),同时也比团队之间的分工配合与合作。
? 混合模式(Mix)
结合了解题模式与攻防模式的CTF赛制,主办方会根据比赛的时间、进度等因素来释放需解答的题目,题目的难度越大,解答完成后获取的分数越高。参赛队伍通过解题获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式CTF赛制的典型代表如iCTF国际CTF竞赛。
1.1.3 竞赛内容
? Reverse
逆向工程类题目需要对软件(Windows、Linux平台)的结构、流程、算法等进行逆向破解,要求有较强的反汇编、反编译的功底。主要考查参赛选手的逆向分析能力。所需知识:汇编语言、加密与解密、常见反编译工具。
? Pwn
Pwn在黑客俚语中代表着攻破,获取权限,由“own”这个词引申而来。在CTF比赛中它代表着溢出类的题目,常见的类型有整数溢出、栈溢出、堆溢出等。主要考查参赛选手对漏洞的利用能力。所需知识:C、OD+IDA、数据结构、操作系统。
? Web
Web是CTF的主要题型,涉及许多常见的Web漏洞,如XSS、文件包含、代码执行、上传漏洞、SQL注入等。也有一些简单的关于网络基础知识的考察,如返回包、TCP/IP、数据包内容和构造。可以说题目环境比较接近真实环境。所需知识:PHP、Python、TCP/IP、SQL。
? Crypto
密码学类题目考察各种加/解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术,以及一些常见的编码解码。主要考查参赛选手密码学相关知识点,通常也会和其他题目相结合。所需知识:矩阵、数论、密码学。
? Mobile
Mobile类题目主要涉及Android和iOS两个主流移动平台,以Android逆向为主,破解APK并提交正确flag。所需知识:Java、Android开发、常见工具。
? Misc
Misc即安全杂项,题目涉及隐写术、流量分析、电子取证、人肉搜索、数据分析、大数据统计等,覆盖面比较广。主要考查参赛选手的各种基础综合知识。所需知识:常见隐写术工具、Wireshark等流量审查工具、编码知识。