CTF 特訓營:技術詳解、解題方法與競賽技巧
FlappyPig 戰隊
買這商品的人也買了...
-
$780$616 -
$680$537 -
$450黑客秘笈 : 滲透測試實用指南, 3/e (The Hacker Playbook 3: Practical Guide To Penetration Testing)
-
$653sqlmap 從入門到精通
-
$806$758 -
$564Python 安全攻防:滲透測試實戰指南
-
$509CTF 安全競賽入門
-
$550$429 -
$709$667 -
$1,000$790 -
$507Kali Linux 2 網絡滲透測試實踐指南, 2/e
-
$420$331 -
$600$468 -
$564極限黑客攻防:CTF 賽題揭秘
-
$1,000$790 -
$1,008$958 -
$980$774 -
$458精通 Linux 內核開發 (Mastering Linux Kernel Development)
-
$580$458 -
$600$474 -
$600$468 -
$880$695 -
$680$530 -
$580$458 -
$880$695
商品描述
本書由國內老牌CTF戰隊FlappyPig撰寫,戰隊成員曾多次榮獲XCTF國際聯賽冠軍、TCTF/0CTF冠軍、WCTF世界黑客大師挑戰賽季軍,多次入圍Defcon全球總決賽,具有豐富的實戰經驗。
本書圍繞CTF競賽需要的安全技術、解題方法和競賽技巧3個維度展開,旨在通過作者扎實的技術功底和豐富的競賽經驗,引領對CTF競賽感興趣的讀者快速入門。書中依據CTF競賽的特點,分別從Web、Reverse、PWN、Crypto、APK、IoT這6個方面系統地對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層的逆向分析技術3個方面介紹APK題目的基礎內容、解題方法和競賽技巧。
IoT篇(第26~30章)
對IoT類型題目的講解,內容涉及IoT、無線通信的基礎知識和相關題型的解題技巧,幫助讀者培養解決IoT相關題目的能力。
作者簡介
FlappyPig
国内老牌知名CTF战队,曾获数十个各级CTF竞赛冠亚季军,具备国际CTF竞赛水准,具备丰富的CTF参赛经验。先后获得XCTF联赛总冠军、XNUCA总决赛冠军、CISCN冠军、TCTF/0CTF(Defcon外卡赛)冠军、WCTF世界黑客大师挑战赛季军,连续三年闯进Defcon决赛,Defcon最好成绩第10名。战队开发维护了用于CTF赛事评级的CTFRank网站。
现在以r3kapig联合战队的方式参赛。
战队成员挖掘并披露漏洞获得CVE编号上百枚,向各类SRC报备漏洞
目錄大綱
前 言
第一篇 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