CTF入门教程

简介

教程不够专业,如有问题及时指出,大佬不喜勿喷

CTF(Capture The Flag)翻译为“夺旗赛”,是网络安全领域的技术竞技比赛,起源于1996年DEFCON黑客大会,如今已成为全球极客的“奥运会”。比赛形式主要分三类:

1. 解题模式(Jeopardy):类似ACM竞赛,选手通过解技术题目(如逆向、Web渗透、密码学)得分,比较简单,可以零基础入门

2. 攻防模式(Attack-Defense):队伍互相攻击对方服务器并防守己方服务,拼漏洞挖掘和修复速度,观赏性强但门槛高。

3. 混合模式(Mix):结合解题与攻防,如iCTF国际赛,考验综合能力。

学习门槛由低到高为 解题-攻防-混合

本人技术一般,本文主要是本人学习过程中的笔记和个人感想,希望能对大家有帮助

CTF解题模式

大概技术背景(建议提前了解一下)

  • 编程基础(Python/C/C++)(前期学python就够了)
  • 计算机网络原理
  • Linux操作系统使用(非常重要)
  • 基本的数学知识(主要是针对密码学的理解)

我将从我认为版块的由简入难开始讲

Misc(杂项)

我认为最好入门的一个版块,也几乎是各大CTF比赛最好拿分的版块,就如其名“杂项”,杂,会出各种题,非常考验脑洞
建议:多做题积累经验,熟悉各种冷门工具,保持开放的思维

工具

工具推荐可以去CTFtools-wiki项目上看对各种工具做了分类,作者写的挺不错

winhex

工具名 工具功能
随波逐流 非常强大的集成工具,拿这个软件新手也能拿一血,不建议直接拿这个一把嗦,先学学原理
Binwalk 分析文件并提取其中嵌入的其他文件或代码,常用于文件分离。 点击跳转

隐写术:

​ 在图片、音频、视频中隐藏信息

取证分析:

​ 从内存镜像、磁盘镜像中恢复数据

编码转换:

​ 各种稀奇古怪的编码方式

网络流量分析:

​ 分析pcap文件找出异常流量

社会工程学:

​ 通过公开信息搜集获取线索

工控

​ 新出的,一个小众但重要的方向,涉及对工业控制系统的协议分析、PLC程序逆向等,与现实世界的关键基础设施安全紧密相关。

Crypto (密码学)

古典密码

​ 凯撒密码、维吉尼亚密码、栅栏密码等

现代密码

​ RSA、AES、DES等加解密原理

哈希函数

​ MD5、SHA系列的特征与碰撞

攻击方法

​ 频率分析、选择密文攻击、共模攻击等

Web安全

​ 最贴近实际应用的方向,考察你对网站和应用系统的漏洞发现、分析与利用能力。

SQL注入:

​ 通过构造恶意SQL语句,欺骗后端数据库执行非预期操作,从而窃取、修改或删除数据。

文件上传与包含

​ 利用网站对文件处理的不当逻辑,上传恶意文件(Webshell)或包含敏感系统文件,最终获取服务器控制权。

SSRF与XXE

​ 利用服务器端请求伪造让内网服务“为你所用”,或通过XML外部实体注入读取服务器本地文件。

反序列化与模板注入

​ 在Java、Python、PHP等语言中,利用对象反序列化过程或模板渲染引擎执行系统命令。

JWT与越权

​ 伪造或破解JSON Web Token,或利用逻辑漏洞实现水平/垂直越权访问。

学习建议

Reverse (逆向工程)

​ 如同数字世界的考古学,要求你将编译后的程序“翻译”回可读的逻辑,理解其运作机制并找到关键信息。

静态分析

​ 使用IDA Pro、Ghidra等反编译工具,在不运行程序的情况下,通过阅读汇编代码或伪代码来理解程序逻辑。

动态调试

​ 使用x64dbg、GDB等调试器,让程序运行起来,通过下断点、单步执行、观察寄存器和内存的变化来动态分析程序行为。

算法还原

​ 核心挑战是理解被混淆或加密的核心算法,并可能需要用Python等语言重写该算法以生成Flag。

安卓逆向

​ 对APK文件进行解包,分析smali代码或使用工具(如Jadx)将Dex文件反编译为Java代码进行审计。

学习建议


Pwn(二进制漏洞利用)

​ 技术栈最最深、难度最最高的方向之一,目标是通过程序漏洞获取远程服务器的shell控制权。

栈溢出

​ 最经典的漏洞类型,通过覆盖函数返回地址,控制程序的执行流程,跳转到你想要的代码位置。

堆利用

​ 比栈溢出更为复杂,涉及堆块的管理机制(如glibc的malloc/free),通过破坏堆结构来实现任意地址写或代码执行。

Shellcode与ROP

​ 在安全机制(如NX)开启的情况下,你无法执行自己输入的代码(Shellcode),但可以通过组合程序中已有的代码片段(Gadgets)组成ROP链来达到同样目的。

格式化字符串漏洞

​ 利用程序中对用户输入未加过滤直接用作格式化字符串参数(如printf)的漏洞,实现任意内存读/写。

内核Pwn

​ 漏洞发生在操作系统内核中,提权漏洞的利用,挑战难度最高。

学习建议:扎实的C语言和汇编基础是前提