当前位置: 首页 > 信息安全书籍 > 正文

安全书籍:《CTF特训营:技术详解、解题方法与竞赛技巧》

《CTF特训营:技术详解、解题方法与竞赛技巧》

FlappyPig战队 CTF竞赛 网络安全比赛书籍

CTF是一门偏重于实践的学问,仅靠读一本书、一篇论文,或者学一门课是远远不够的,它需要足够的兴趣和精力,不停地做题、实战、锻炼,并没有捷径可走。——FlappyPig战队

作者团队介绍

FlappyPig战队

国内老牌知名CTF战队,曾获数十个各级CTF竞赛冠亚季军,具备国际CTF竞赛水准,具备丰富的CTF参赛经验。先后获得XCTF联赛总冠军、XNUCA总决赛冠军、CISCN冠军、TCTF/0CTF(Defcon外卡赛)冠军、WCTF世界黑客大师挑战赛季军,连续三年闯进Defcon决赛,Defcon最好成绩第10名。战队开发维护了用于CTF赛事评级的CTFRank网站。现在以r3kapig联合战队的方式参赛。

战队主要成员目前就职于阿里巴巴、腾讯、京东等,从事网络安全、漏洞挖掘相关工作。在网络安全竞赛、漏洞挖掘、渗透测试等领域具有非常深厚的经验积累,擅长Web、应用层软件、操作系统、区块链、嵌入式等多领域的漏洞挖掘与利用。

专家推荐

CTF是安全从业人员入门和进阶非常好的方式,寓学于练,以练促学,打一场好的CTF竞赛如洗筋易髓。本书以拔尖题目为骨,化知识体系为肉,覆盖了安全攻防技术的方方面面,实战与理论结合,深入浅出,娓娓道来,不仅适合对CTF感兴趣的初学者,更适合想在安全技术上精进的每位技术人员。

——何淇丹 (Flanker) 三度Pwn2Own冠军,纳斯达克上市公司安全总监

近年来,CTF网络安全大赛在全国如火如荼地开展,国内团队在国际比赛中也频频获得优异战绩。广大自称“萌新”的CTF爱好者们急切需要一本系统性介绍CTF竞赛知识技能体系的好书,由国际著名战队r3kapig成员呈现的本书,于他们而言可说是“雪中送炭”。本书内容全面,覆盖了CTF竞赛中主流的Web安全、逆向分析、PWN二进制漏洞挖掘与利用、Crypto密码学四大类别,还包含了移动安全与物联网这两个贴近实际的CTF赛题场景。书中内容循序渐进,以丰富的经典赛题案例引导读者在实践复盘中掌握各种解题方法与技巧,易于读者理解并举一反三进行拓展实践,可谓是一本CTF实操宝典,在此强烈推荐。

——诸葛建伟 清华大学网络研究院副研究员,博导,蓝莲花战队联合创始人及领队,XCTF国际联赛发起人及技术委员会主任

CTF竞赛有益于培养实践型安全人才,近年来在中国开展得如火如荼,但市面上一直缺少一本系统化的参考书。本书是作者资深实战经验总结,书中内容全面覆盖了CTF竞赛的各个知识领域,并对历年典型题目进行了剖析,具体且深入。对于想了解或参加CTF竞赛的安全技术人员来说,本书值得参考。

——段海新 清华大学教授

CTF赛制介绍

最初的CTF赛制就是Jeopardy赛制(还有若干变种)。这种赛制采用解题模式,解出一道题目提交flag就可得分。后来出现了AD(Attack&Defense)赛制,在AD赛制中,每支队伍维护一台或若干台gamebox,每支队伍维护的gamebox上都有相同的题目服务。每个服务的启用权限均是题目的权限,选手能拿到的权限略高于题目的权限,则可以进行后门清理等操作,也可以替换题目的bin文件,用于patch。主办方有root权限。主办方每间隔固定时间(5~20分钟)都会针对每道题目向gamebox推送一个flag。不同题目的权限无法访问相互的flag。选手通过PWN掉服务,获取对应题目的flag值并提交。同一支队伍的flag分每轮都是固定的,如果被多个队伍获取,则均分。主办方会针对每道题编写若干检查器来判断服务是否正常运行。如果题目被判定失效,那么该题也会扣分。通常来说,与题目flag每轮的服务一样,这个分数会被所有没有判定失效的队伍均分,这种计分方式被称为零和赛制。零和赛制下,AD出现了很多弊端,因此社区正在不断地对AD赛制进行更新。Defcon Final作为先行者推出了非零和的计分方法,并通过Git的方式对赛题进行运维,这使得选手只须拿出少量精力放到metagame上,而把更多的精力放到题目本身上。目前来说,社区更倾向于采用单纯的Jeopardy赛制,因为对于CTF来说,题目本身比赛制重要得多。

 

内容简介

本书由国内老牌CTF战队FlappyPig撰写,战队成员曾多次荣获XCTF国际联赛冠军、TCTF/0CTF冠军、WCTF世界黑客大师挑战赛季军,多次入围Defcon全球总决赛,具有丰富的实战经验。

本书围绕CTF竞赛需要的安全技术、解题方法和竞赛技巧3个维度展开,旨在通过作者扎实的技术功底和丰富的竞赛经验,引领对CTF竞赛感兴趣的读者快速入门。书中依据CTF竞赛的特点,分别从Web、Reverse、PWN、Crypto、APK、IoT这六个方面系统地对CTF竞赛的知识点、模式、技巧进行了深入讲解,每一篇都搭配历年真题,帮助读者加深理解。

全书一共分六篇。

Web篇(第1~8章)

主要讲解CTF比赛中Web类型题目的一些基础知识点与常用的工具和插件,这些知识点和工具也可以用于部分渗透测试的实战中。

Reverse篇(第9~10章)

主要对CTF中逆向分析的主要方法、常用分析工具、逆向分析技术和破解方法进行讲解,帮助读者提高逆向分析能力。

PWN篇(第11~17章)

对PWN二进制漏洞挖掘利用的详细分析,主要讲解了针对各种漏洞的利用方法和利用技巧,作者可以结合实例题目加深理解。

Crypto篇(第18~22章)

对Crypto类型题目的知识和例题讲解,主要从概述、编码、古典密码、现代密码以及真题解析几个方向进行叙述。

APK篇(第23~25章)

讲解CTF中的APK的相关内容,主要从APK的基础知识点、Dalvik层的逆向分析技术,以及Native层的逆向分析技术三个方面介绍APK题目的寄出内容、解题方法和竞赛技巧。

IoT篇(第26~30章)

对IoT类型题目的讲解,内容涉及IoT、无线通信的基础知识和相关题型的解题技巧,帮助大家培养解决IoT相关题目的能力。

目录

前 言

第一篇 CTF之Web

第1章 常用工具安装及使用  2

1.1 Burp Suite  2

1.2 Sqlmap  8

1.3 浏览器与插件  9

1.4 Nmap  11

第2章 SQL注入攻击  13

2.1 什么是SQL注入  13

2.2 可以联合查询的SQL注入  14

2.3 报错注入  14

2.4 Bool 盲注  16

2.5 时间盲注  17

2.6 二次注入  18

2.7 limit之后的注入  20

2.8 注入点的位置及发现  20

2.9 绕过  21

2.10 SQL读写文件  24

2.11 小结  24

第3章 跨站脚本攻击  25

3.1 概述  25

3.2 常见XSS漏洞分类  25

3.3 防护与绕过  29

3.4 危害与利用技巧  38

3.5 实例  40

第4章 服务端请求伪造  42

4.1 如何形成  42

4.2 防护绕过  43

4.3 危害与利用技巧  43

4.4 实例  46

第5章 利用特性进行攻击  48

5.1 PHP语言特性  48

5.1.1 弱类型48

5.1.2 反序列化漏洞49

5.1.3 截断51

5.1.4 伪协议51

5.1.5 变量覆盖52

5.1.6 防护绕过54

5.2 Windows系统特性  54

第6章 代码审计  56

6.1 源码泄露  56

6.2 代码审计的方法与技巧  61

第7章 条件竞争  67

7.1 概述  67

7.2 条件竞争问题分析及测试  68

第8章 案 例 解 析  73

8.1 NSCTF 2015 Web实例  73

8.2 湖湘杯2016线上选拔赛Web实例  75

8.3 0CTF 2017 Web实例  79

8.4 2019 WCTF 大师赛赛题剖析:P-door  80

本篇小结  87

第二篇 CTF之Reverse

第9章 Reverse 概述  90

9.1 逆向分析的主要方法  90

9.2 汇编指令体系结构  91

9.2.1 x86指令体系91

9.2.2 x64指令体系92

9.3 逆向分析工具介绍  93

9.3.1 反汇编和反编译工具93

9.3.2 调试器97

9.3.3 Trace类工具100

第10章 Reverse 分析  102

10.1 常规逆向分析流程  102

10.1.1 关键代码定位102

10.1.2 常见加密算法识别104

10.1.3 求解flag109

10.2 自动化逆向  113

10.2.1 IDAPython114

10.2.2 PythonGdb114

10.2.3 pydbg115

10.2.4 Angr115

10.3 干扰分析技术及破解方法  116

10.3.1 花指令116

10.3.2 反调试117

10.3.3 加壳119

10.3.4 控制流混淆121

10.3.5 双进程保护124

10.3.6 虚拟机保护127

10.4 脚本语言的逆向  132

10.4.1 .NET程序逆向132

10.4.2 Python程序逆向135

10.4.3 Java程序逆向137

本篇小结  139

第三篇 CTF之PWN

第11章 PWN 基础  142

11.1 基本工具  142

11.2 保护机制  143

11.3 PWN类型  143

11.4 常见利用方法  144

11.5 程序内存布局  149

11.6 真题解析  150

第12章 栈相关漏洞  166

12.1 栈介绍  166

12.1.1 函数栈的调用机制167

12.1.2 函数参数传递168

12.2 栈溢出  169

12.2.1 基本概念169

12.2.2 覆盖栈缓冲区的具体用途170

12.3 栈的特殊利用  177

12.4 栈喷射  177

12.5 线程栈  178

12.6 真题解析  184

12.6.1 {ZCTF-2015} guess(PWN100)184

12.6.2 {ZCTF-2015} spell (PWN300)187

12.6.3 {Codegate-2015} Chess(PWN700)189

12.6.4 {RCTF-2015} Welpwn(PWN200)196

第13章 堆相关漏洞  198

13.1 堆介绍  198

13.1.1 堆基本数据结构chunk198

13.1.2 堆空闲块管理结构bin200

13.1.3 malloc基本规则201

13.1.4 free基本规则201

13.1.5 tcache202

13.2 漏洞类型  204

13.3 利用方法  206

13.3.1 最基本的堆利用206

13.3.2 unlink208

13.3.3 fastbin attack211

13.3.4 forgotten chunk212

13.3.5 house of force217

13.3.6 house of spirit218

13.3.7 house of orange218

13.3.8 堆喷射224

13.3.9 更多堆利用技巧224

13.4 真题解析  225

第14章 格式化字符串漏洞  244

14.1 基本概念  244

14.2 信息泄露与修改  245

14.3 额外技巧  249

14.4 真题解析  254

14.4.1 {CCTF-2016} PWN3(PWN350)254

14.4.2 {RCTF-2015} nobug(PWN300)256

14.4.3 {LCTF-2016} PWN200258

第15章 整型漏洞  261

15.1 宽度溢出  261

15.2 符号转换  263

15.3 数组越界  264

15.4 真题解析  265

第16章 逻辑漏洞  269

16.1 基本概念  269

16.2 竞态条件漏洞  269

16.3 真题解析  271

第17章 Attack&Defense模式  273

17.1 修补方案  273

17.1.1 大小修改法273

17.1.2 函数替换法275

17.1.3 .eh_frame 段Patch法276

17.1.4 其他方法277

17.2 攻防策略  277

相关知识链接推荐  278

本篇小结  279

第四篇 CTF之Crypto

第18章 Crypto 概述  282

第19章 编码  284

19.1 hex  284

19.2 urlencode  286

19.3 morsecode  286

19.4 jsfuck  289

19.5 uuencode  291

19.6 base家族  291

第20章 古典密码  294

20.1 移位密码  294

20.1.1 简单移位密码  294

20.1.2 曲路密码  296

20.1.3 云影密码  296

20.1.4 栅栏密码  296

20.2 替代密码  298

20.2.1 单表替代密码  298

20.2.2 多表替代密码  303

第21章 现代密码  309

21.1 分组密码和序列密码  309

21.1.1 DES/AES基本加解密  309

21.1.2 分组密码CBC bit翻转攻击  310

21.1.3 分组密码CBC选择密文攻击  312

21.1.4 分组密码CBC padding oracle攻击   312

21.1.5 Feistel结构分析  313

21.1.6 攻击伪随机数发生器  314

21.2 公钥密码  319

21.2.1 RSA基础  319

21.2.2 直接模数分解  320

21.2.3 费马分解和Pollard_rho分解  322

21.2.4 公约数模数分解  325

21.2.5 其他模数分解方式  327

21.2.6 小指数明文爆破  329

21.2.7 选择密文攻击  330

21.2.8 LLL-attack  330

21.2.9 Wiener Attack & Boneh Durfee Attack  334

21.2.10 共模攻击  338

21.2.11 广播攻击  340

21.2.12 相关消息攻击  342

21.2.13 DSA  343

21.3 哈希  344

21.3.1 哈希碰撞  344

21.3.2 哈希长度扩展攻击  345

第22章 真题解析  348

22.1 SUPEREXPRESS  348

22.2 VIGENERE  350

22.3 Revolver  357

22.4 Railgun  362

本篇小结  365

第五篇 CTF之APK

第23章 APK基础  368

23.1 Android题目类型  368

23.2 Android基本架构  368

23.2.1 Android的Dalvik虚拟机  369

23.2.2 Native层  369

23.3 ARM架构基础知识  369

23.3.1 函数调用/跳转指令  370

23.3.2 出栈入栈指令  371

23.3.3 保存/恢复寄存器的值  371

23.4 adb  371

23.5 APK文件格式  372

第24章 Dalvik层逆向分析  373

24.1 Dalvik基础知识  373

24.1.1 寄存器  374

24.1.2 类型  374

24.1.3 方法  375

24.1.4 指令特点  375

24.2 静态分析  376

24.2.1 使用Apktool反编译APK程序  376

24.2.2 使用dex2jar生成jar文件  379

24.2.3 使用jd-gui查看反编译的Java代码  380

24.2.4 使用FernFlower反编译Jar文件  381

24.2.5 使用Android Killer / jadx / APK Studio逆向分析平台  381

24.2.6 使用JEB进行静态分析  388

24.2.7 其他的静态分析软件  393

24.3 动态调试  394

24.3.1 使用log调试  394

24.3.2 smali动态调试  396

24.3.3 使用Xposed框架Hook进程  400

24.3.4 使用Frida框架Hook进程  405

24.4 Dalvik层混淆及加固技术  409

24.4.1 ProGuard混淆  409

24.4.2 DEX破坏  409

24.4.3 APK伪加密  410

24.4.4 APK增加数据  410

24.4.5 DEX隐藏  410

第25章 Native层逆向  411

25.1 Native层介绍  411

25.1.1 正向—使用NDK编写Native层应用  411

25.1.2 JNI调用特征分析  413

25.2 使用IDA Pro静态分析  419

25.3 动态调试  423

25.3.1 使用IDA Pro进行动态调试  423

25.3.2 使用GDB进行动态调试  425

25.3.3 使用Frida框架HOOK进程  428

25.4 OLLVM混淆及加固技术  430

25.4.1 -fla  431

25.4.2 -bcf  432

25.4.3 -sub  434

本篇小结  436

第六篇 CTF之IoT

第26章 IoT基础知识  438

26.1 什么是IoT  438

26.2 什么是嵌入式系统  439

26.3 嵌入式系统的基本概念  439

26.4 CTF中常见的IoT题型归类  441

第27章 IoT固件逆向工程  443

27.1 常见IoT架构介绍  443

27.2 芯片手册的寻找与阅读  446

27.3 使用IDA手动寻找固件入口点  450

27.4 寄存器地址和SRAM地址的处理方法  453

27.5 IDA之CPU高级选项  456

27.6 动态调试环境搭建  458

27.7 专业调试工具  459

27.8 反编译工具  469

第28章 固件结构分析  470

28.1 常见固件类型  470

28.2 Flash文件系统  471

28.3 固件基地址确定方法  471

28.4 固件分析工具  473

第29章 无线信号分析  475

29.1 无线通信基本理论介绍  475

29.2 常见调制方式与解调方法  476

29.3 Matlab在数字信号处理中的应用  478

第30章 经典赛题讲解  483

30.1 PCTF2016:Confused ARM  483

30.2 UCTF2016资格赛:TWI  486

30.3 UCTF2016决赛:Normandie  491

30.4 ACTF2016:4G Radio  498

30.5 UCTF2016资格赛:传感器(1)(2)  500

30.6 UCTF2016资格赛:Add  502

本篇小结  506

打赏

本文固定链接: https://www.moondream.cn/?p=2209 | 月梦工作室

该日志由 moondream 于2020年09月04日发表在 信息安全书籍 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 安全书籍:《CTF特训营:技术详解、解题方法与竞赛技巧》 | 月梦工作室
关键字:

安全书籍:《CTF特训营:技术详解、解题方法与竞赛技巧》:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter