新手如何入门 CTF?从零开始掌握网络安全夺旗赛
CTF 是什么?
CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF 起源于 1996 年 DEFCON 全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013 年全球举办了超过五十场国际性 CTF 赛事。而 DEFCON 作为 CTF 赛制的发源地,DEFCON CTF 也成为了目前全球最高技术水平和影响力的 CTF 竞赛,类似于 CTF 赛场中的'世界杯'。
为什么要参加 CTF?
对于初学者而言,想要入门渗透测试,必须通过各种方式练手。但由于《网络安全法》的颁布,随意扫描他人网站或非授权渗透测试都存在一定的法律风险。现实中,曾有案例显示,即使只是扫描行为且未造成实际破坏,也可能面临法律制裁。
因此,初学者需要一个对应的安全环境来练习,而常见的靶机对于小白来说往往太过复杂,容易不知如何下手。这个时候 CTF 就非常适合了。CTF 题目通常是一个或几个知识点相互糅合,目标性比较强。如果想要体会到安全的成就感和趣味性,促进自己边练边学,CTF 就是一个很好的选择。
CTF 的主要题型分类
CTF 题目种类繁多,主要可以分为以下几大类:
1. MISC(安全杂项)
全称 Miscellaneous。题目涉及流量分析、电子取证、人肉搜索、数据分析、大数据统计等,覆盖面非常广。我们平时看到的社工类题目;给你一个流量包让你分析的题目;取证分析题目,都属于这类题目。主要考查参赛选手的各种基础综合知识,考察范围比较广。
- 常用工具:Wireshark, Binwalk, StegSolve, 010 Editor.
2. PPC(编程类)
全称 Professionally Program Coder。题目涉及到程序编写、编程算法实现。算法的逆向编写,批量处理等,有时候用编程去处理问题会方便得多。当然 PPC 相比 ACM 来说,还是较为容易的。至于编程语言嘛,推荐使用 Python 来尝试。这部分主要考察选手的快速编程能力。
- 常用语言:Python, C/C++.
3. CRYPTO(密码学)
全称 Cryptography。题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。这部分主要考查参赛选手密码学相关知识点。
- 常见考点:Base64, MD5, RSA, AES, 异或运算等。
4. REVERSE(逆向)
全称 Reverse。题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底。需要掌握汇编,堆栈、寄存器方面的知识。有好的逻辑思维能力。主要考查参赛选手的逆向分析能力。此类题目也是线下比赛的考察重点。
- 常用工具:IDA Pro, OllyDbg, Ghidra.
5. STEGA(隐写)
全称 Steganography。隐写术是 CTF 中比较神奇的一类,知道这个东西的时候感觉好神奇啊,黑客们真是聪明。题目的 Flag 会隐藏到图片、音频、视频等各类数据载体中供参赛选手获取。载体就是图片、音频、视频等,可能是修改了这些载体来隐藏 flag,也可能将 flag 隐藏在这些载体的二进制空白位置。有时候需要你侦探精神足够的强,才能发现。此类题目主要考查参赛选手的对各种隐写工具、隐写算法的熟悉程度。
6. PWN(溢出)
PWN 在黑客俚语中代表着攻破,取得权限,在 CTF 比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出、堆溢出。在 CTF 比赛中,线上比赛会有,但是比例不会太重,进入线下比赛,逆向和溢出则是战队实力的关键。主要考察参数选手漏洞挖掘和利用能力。
- 核心概念:缓冲区溢出,ROP Chain, Shellcode.
7. WEB(Web 类)
WEB 应用在今天越来越广泛,也是 CTF 夺旗竞赛中的主要题型,题目涉及到常见的 Web 漏洞,诸如注入、XSS、文件包含、代码审计、上传等漏洞。这些题目都不是简单的注入、上传题目,至少会有一层的安全过滤,需要选手想办法绕过。且 Web 题目是国内比较多也是大家比较喜欢的题目。因为大多数人开始安全都是从 Web 日站开始的。
- 常见漏洞:SQL 注入,跨站脚本 (XSS),文件上传,反序列化,命令执行。


