CTF特訓(xùn)營(yíng):技術(shù)詳解、解題方法與競(jìng)賽技巧
定 價(jià):89 元
叢書名:網(wǎng)絡(luò)空間安全技術(shù)叢書
- 作者:FlappyPig戰(zhàn)隊(duì)
- 出版時(shí)間:2020/6/1
- ISBN:9787111657354
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP393.08
- 頁(yè)碼:0
- 紙張:
- 版次:1
- 開本:16K
內(nèi)容簡(jiǎn)介
本書由國(guó)內(nèi)老牌CTF戰(zhàn)隊(duì)FlappyPig撰寫,戰(zhàn)隊(duì)成員曾多次榮獲XCTF國(guó)際聯(lián)賽冠軍、TCTF/0CTF冠軍、WCTF世界黑客大師挑戰(zhàn)賽季軍,多次入圍Defcon全球總決賽,具有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。
本書圍繞CTF競(jìng)賽需要的安全技術(shù)、解題方法和競(jìng)賽技巧3個(gè)維度展開,旨在通過作者扎實(shí)的技術(shù)功底和豐富的競(jìng)賽經(jīng)驗(yàn),引領(lǐng)對(duì)CTF競(jìng)賽感興趣的讀者快速入門。書中依據(jù)CTF競(jìng)賽的特點(diǎn),分別從Web、Reverse、PWN、Crypto、APK、IoT這六個(gè)方面系統(tǒng)地對(duì)CTF競(jìng)賽的知識(shí)點(diǎn)、模式、技巧進(jìn)行了深入講解,每一篇都搭配歷年真題,幫助讀者加深理解。
全書一共分六篇。
Web篇(第1~8章)
主要講解CTF比賽中Web類型題目的一些基礎(chǔ)知識(shí)點(diǎn)與常用的工具和插件,這些知識(shí)點(diǎn)和工具也可以用于部分滲透測(cè)試的實(shí)戰(zhàn)中。
Reverse篇(第9~10章)
主要對(duì)CTF中逆向分析的主要方法、常用分析工具、逆向分析技術(shù)和破解方法進(jìn)行講解,幫助讀者提高逆向分析能力。
PWN篇(第11~17章)
對(duì)PWN二進(jìn)制漏洞挖掘利用的詳細(xì)分析,主要講解了針對(duì)各種漏洞的利用方法和利用技巧,作者可以結(jié)合實(shí)例題目加深理解。
Crypto篇(第18~22章)
對(duì)Crypto類型題目的知識(shí)和例題講解,主要從概述、編碼、古典密碼、現(xiàn)代密碼以及真題解析幾個(gè)方向進(jìn)行敘述。
APK篇(第23~25章)
講解CTF中的APK的相關(guān)內(nèi)容,主要從APK的基礎(chǔ)知識(shí)點(diǎn)、Dalvik層的逆向分析技術(shù),以及Native層的逆向分析技術(shù)三個(gè)方面介紹APK題目的寄出內(nèi)容、解題方法和競(jìng)賽技巧。
IoT篇(第26~30章)
對(duì)IoT類型題目的講解,內(nèi)容涉及IoT、無線通信的基礎(chǔ)知識(shí)和相關(guān)題型的解題技巧,幫助大家培養(yǎng)解決IoT相關(guān)題目的能力。
前 言
第一篇 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 可以聯(lián)合查詢的SQL注入 14
2.3 報(bào)錯(cuò)注入 14
2.4 Bool 盲注 16
2.5 時(shí)間盲注 17
2.6 二次注入 18
2.7 limit之后的注入 20
2.8 注入點(diǎn)的位置及發(fā)現(xiàn) 20
2.9 繞過 21
2.10 SQL讀寫文件 24
2.11 小結(jié) 24
第3章 跨站腳本攻擊 25
3.1 概述 25
3.2 常見XSS漏洞分類 25
3.3 防護(hù)與繞過 29
3.4 危害與利用技巧 38
3.5 實(shí)例 40
第4章 服務(wù)端請(qǐng)求偽造 42
4.1 如何形成 42
4.2 防護(hù)繞過 43
4.3 危害與利用技巧 43
4.4 實(shí)例 46
第5章 利用特性進(jìn)行攻擊 48
5.1 PHP語(yǔ)言特性 48
5.1.1 弱類型48
5.1.2 反序列化漏洞49
5.1.3 截?cái)?1
5.1.4 偽協(xié)議51
5.1.5 變量覆蓋52
5.1.6 防護(hù)繞過54
5.2 Windows系統(tǒng)特性 54
第6章 代碼審計(jì) 56
6.1 源碼泄露 56
6.2 代碼審計(jì)的方法與技巧 61
第7章 條件競(jìng)爭(zhēng) 67
7.1 概述 67
7.2 條件競(jìng)爭(zhēng)問題分析及測(cè)試 68
第8章 案 例 解 析 73
8.1 NSCTF 2015 Web實(shí)例 73
8.2 湖湘杯2016線上選拔賽Web實(shí)例 75
8.3 0CTF 2017 Web實(shí)例 79
8.4 2019 WCTF 大師賽賽題剖析:P-door 80
本篇小結(jié) 87
第二篇 CTF之Reverse
第9章 Reverse 概述 90
9.1 逆向分析的主要方法 90
9.2 匯編指令體系結(jié)構(gòu) 91
9.2.1 x86指令體系91
9.2.2 x64指令體系92
9.3 逆向分析工具介紹 93
9.3.1 反匯編和反編譯工具93
9.3.2 調(diào)試器97
9.3.3 Trace類工具100
第10章 Reverse 分析 102
10.1 常規(guī)逆向分析流程 102
10.1.1 關(guān)鍵代碼定位102
10.1.2 常見加密算法識(shí)別104
10.1.3 求解flag109
10.2 自動(dòng)化逆向 113
10.2.1 IDAPython114
10.2.2 PythonGdb114
10.2.3 pydbg115
10.2.4 Angr115
10.3 干擾分析技術(shù)及破解方法 116
10.3.1 花指令116
10.3.2 反調(diào)試117
10.3.3 加殼119
10.3.4 控制流混淆121
10.3.5 雙進(jìn)程保護(hù)124
10.3.6 虛擬機(jī)保護(hù)127
10.4 腳本語(yǔ)言的逆向 132
10.4.1 .NET程序逆向132
10.4.2 Python程序逆向135
10.4.3 Java程序逆向137
本篇小結(jié) 139
第三篇 CTF之PWN
第11章 PWN 基礎(chǔ) 142
11.1 基本工具 142
11.2 保護(hù)機(jī)制 143
11.3 PWN類型 143
11.4 常見利用方法 144
11.5 程序內(nèi)存布局 149
11.6 真題解析 150
第12章 棧相關(guān)漏洞 166
12.1 棧介紹 166
12.1.1 函數(shù)棧的調(diào)用機(jī)制167
12.1.2 函數(shù)參數(shù)傳遞168
12.2 棧溢出 169
12.2.1 基本概念169
12.2.2 覆蓋棧緩沖區(qū)的具體用途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章 堆相關(guān)漏洞 198
13.1 堆介紹 198
13.1.1 堆基本數(shù)據(jù)結(jié)構(gòu)chunk198
13.1.2 堆空閑塊管理結(jié)構(gòu)bin200
13.1.3 malloc基本規(guī)則201
13.1.4 free基本規(guī)則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 符號(hào)轉(zhuǎn)換 263
15.3 數(shù)組越界 264
15.4 真題解析 265
第16章 邏輯漏洞 269
16.1 基本概念 269
16.2 競(jìng)態(tài)條件漏洞 269
16.3 真題解析 271
第17章 Attack&Defense模式 273
17.1 修補(bǔ)方案 273
17.1.1 大小修改法273
17.1.2 函數(shù)替換法275
17.1.3 .eh_frame 段Patch法276
17.1.4 其他方法277
17.2 攻防策略 277
相關(guān)知識(shí)鏈接推薦 278
本篇小結(jié) 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 簡(jiǎn)單移位密碼 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章 現(xiàn)代密碼 309
21.1 分組密碼和序列密碼 309
21.1.1 DES/AES基本加解密 309
21.1.2 分組密碼CBC bit翻轉(zhuǎn)攻擊 310
21.1.3 分組密碼CBC選擇密文攻擊 312
21.1.4 分組密碼CBC padding oracle攻擊 312
21.1.5 Feistel結(jié)構(gòu)分析 313
21.1.6 攻擊偽隨機(jī)數(shù)發(fā)生器 314
21.2 公鑰密碼 319
21.2.1 RSA基礎(chǔ) 319
21.2.2 直接模數(shù)分解 320
21.2.3 費(fèi)馬分解和Pollard_rho分解 322
21.2.4 公約數(shù)模數(shù)分解 325
21.2.5 其他模數(shù)分解方式 327
21.2.6 小指數(shù)明文爆破 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 相關(guān)消息攻擊 342
21.2.13 DSA 343
21.3 哈希 344
21.3.1 哈希碰撞 344
21.3.2 哈希長(zhǎng)度擴(kuò)展攻擊 345
第22章 真題解析 348
22.1 SUPEREXPRESS 348
22.2 VIGENERE 350
22.3 Revolver 357
22.4 Railgun 362
本篇小結(jié) 365
第五篇 CTF之APK
第23章 APK基礎(chǔ) 368
23.1 Android題目類型 368
23.2 Android基本架構(gòu) 368
23.2.1 Android的Dalvik虛擬機(jī) 369
23.2.2 Native層 369
23.3 ARM架構(gòu)基礎(chǔ)知識(shí) 369
23.3.1 函數(shù)調(diào)用/跳轉(zhuǎn)指令 370
23.3.2 出棧入棧指令 371
23.3.3 保存/恢復(fù)寄存器的值 371
23.4 adb 371
23.5 APK文件格式 372
第24章 Dalvik層逆向分析 373
24.1 Dalvik基礎(chǔ)知識(shí) 373
24.1.1 寄存器 374
24.1.2 類型 374
24.1.3 方法 375
24.1.4 指令特點(diǎn) 375
24.2 靜態(tài)分析 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逆向分析平臺(tái) 381
24.2.6 使用JEB進(jìn)行靜態(tài)分析 388
24.2.7 其他的靜態(tài)分析軟件 393
24.3 動(dòng)態(tài)調(diào)試 394
24.3.1 使用log調(diào)試 394
24.3.2 smali動(dòng)態(tài)調(diào)試 396
24.3.3 使用Xposed框架Hook進(jìn)程 400
24.3.4 使用Frida框架Hook進(jìn)程 405
24.4 Dalvik層混淆及加固技術(shù) 409
24.4.1 ProGuard混淆 409
24.4.2 DEX破壞 409
24.4.3 APK偽加密 410
24.4.4 APK增加數(shù)據(jù) 410
24.4.5 DEX隱藏 410
第25章 Native層逆向 411
25.1 Native層介紹 411
25.1.1 正向—使用NDK編寫Native層應(yīng)用 411
25.1.2 JNI調(diào)用特征分析 413
25.2 使用IDA Pro靜態(tài)分析 419
25.3 動(dòng)態(tài)調(diào)試 423
25.3.1 使用IDA Pro進(jìn)行動(dòng)態(tài)調(diào)試 423
25.3.2 使用GDB進(jìn)行動(dòng)態(tài)調(diào)試 425
25.3.3 使用Frida框架HOOK進(jìn)程 428
25.4 OLLVM混淆及加固技術(shù) 430
25.4.1 -fla 431
25.4.2 -bcf 432
25.4.3 -sub 434
本篇小結(jié) 436
第六篇 CTF之IoT
第26章 IoT基礎(chǔ)知識(shí) 438
26.1 什么是IoT 438
26.2 什么是嵌入式系統(tǒng) 439
26.3 嵌入式系統(tǒng)的基本概念 439
26.4 CTF中常見的IoT題型歸類 441
第27章 IoT固件逆向工程 443
27.1 常見IoT架構(gòu)介紹 443
27.2 芯片手冊(cè)的尋找與閱讀 446
27.3 使用IDA手動(dòng)尋找固件入口點(diǎn) 450
27.4 寄存器地址和SRAM地址的處理方法 453
27.5 IDA之CPU高級(jí)選項(xiàng) 456
27.6 動(dòng)態(tài)調(diào)試環(huán)境搭建 458
27.7 專業(yè)調(diào)試工具 459
27.8 反編譯工具 469
第28章 固件結(jié)構(gòu)分析 470
28.1 常見固件類型 470
28.2 Flash文件系統(tǒng) 471
28.3 固件基地址確定方法 471
28.4 固件分析工具 473
第29章 無線信號(hào)分析 475
29.1 無線通信基本理論介紹 475
29.2 常見調(diào)制方式與解調(diào)方法 476
29.3 Matlab在數(shù)字信號(hào)處理中的應(yīng)用 478
第30章 經(jīng)典賽題講解 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
本篇小結(jié) 506