CTF競賽權威指南(Pwn篇)

CTF競賽權威指南(Pwn篇)

CTF競賽權威指南(Pwn篇)》是電子工業出版社於2020年12月出版的圖書,由楊超編著。

本書利用歷屆CTF真題,以x86/x64平台下Linux系統中的Pwn樣題為例,講述漏洞利用的基本方法和技巧。

基本介紹

  • 中文名:CTF競賽權威指南(Pwn篇)
  • 作者:楊超
  • 出版時間:2020年12月
  • 出版社:電子工業出版社
  • 頁數:726 頁
  • ISBN:9787121399527
  • 定價:139 元
  • 開本:16 開
內容簡介,圖書目錄,作者簡介,

內容簡介

《CTF競賽權威指南(Pwn篇)》專注於Linux二進制安全。全書包含12章,從二進制底層開始,結合源碼詳細分析了常見的二進制安全漏洞、緩解機制以及漏洞利用方法,並輔以分析工具和環境搭建的講解。
本書在素材的選擇上較為連續、完整,每個知識點均配以經典例題,並花費了大量篇幅深入講解,以最大程度地還原分析思路和解題過程。讀者完全可以依據本書自主、系統性地學習,達到舉一反三的效果。
本書主要面向CTF初學者,也適合對CTF感興趣的人群學習。

圖書目錄

第1章 CTF簡介 1
1.1 賽事介紹 1
1.1.1 賽事起源 1
1.1.2 競賽模式 1
1.1.3 競賽內容 2
1.2 知名賽事及會議 3
1.2.1 網路安全競賽 3
1.2.2 網路安全會議 5
1.2.3 網路安全學術會議 6
1.3 學習經驗 6
1.3.1 二進制安全入門 6
1.3.2 CTF經驗 8
1.3.3 對安全從業者的建議 8
參考資料 10
第2章 二進制檔案 11
2.1 從原始碼到執行檔 11
2.1.1 編譯原理 11
2.1.2 GCC編譯過程 12
2.1.3 預處理階段 13
2.1.4 編譯階段 14
2.1.5 彙編階段 15
2.1.6 連結階段 15
2.2 ELF檔案格式 16
2.2.1 ELF檔案的類型 16
2.2.2 ELF檔案的結構 18
2.2.3 執行檔的裝載 24
2.3 靜態連結 26
2.3.1 地址空間分配 26
2.3.2 靜態連結的詳細過程 27
2.3.3 靜態程式庫 29
2.4 動態連結 30
2.4.1 什麼是動態連結 30
2.4.2 位置無關代碼 31
2.4.3 延遲綁定 32
參考資料 33
第3章 彙編基礎 34
3.1 CPU架構與指令集 34
3.1.1 指令集架構 34
3.1.2 CISC與RISC對比 35
3.2 x86/x64彙編基礎 36
3.2.1 CPU操作模式 36
3.2.2 語法風格 36
3.2.3 暫存器與數據類型 37
3.2.4 數據傳送與訪問 38
3.2.5 算術運算與邏輯運算 39
3.2.6 跳轉指令與循環指令 40
3.2.7 棧與函式調用 41
參考資料 44
第4章 Linux安全機制 45
4.1 Linux基礎 45
4.1.1 常用命令 45
4.1.2 流、管道和重定向 46
4.1.3 根目錄結構 47
4.1.4 用戶組及檔案許可權 47
4.1.5 環境變數 49
4.1.6 procfs檔案系統 51
4.1.7 位元組序 52
4.1.8 調用約定 53
4.1.9 核心轉儲 54
4.1.10 系統調用 55
4.2 Stack Canaries 58
4.2.1 簡介 58
4.2.2 實現 61
4.2.3 NJCTF 2017:messager 63
4.2.4 sixstars CTF 2018:babystack 65
4.3 No-eXecute 69
4.3.1 簡介 69
4.3.2 實現 70
4.3.3 示例 73
4.4 ASLR和PIE 75
4.4.1 ASLR 75
4.4.2 PIE 76
4.4.3 實現 77
4.4.4 示例 79
4.5 FORTIFY_SOURCE 83
4.5.1 簡介 83
4.5.2 實現 84
4.5.3 示例 86
4.5.4 安全性 89
4.6 RELRO 90
4.6.1 簡介 90
4.6.2 示例 90
4.6.3 實現 93
參考資料 94
第5章 分析環境搭建 96
5.1 虛擬機環境 96
5.1.1 虛擬化與虛擬機管理程式 96
5.1.2 安裝虛擬機 97
5.1.3 編譯debug版本的glibc 98
5.2 Docker環境 100
5.2.1 容器與Docker 100
5.2.2 Docker安裝及使用 101
5.2.3 Pwn題目部署 102
參考資料 103
第6章 分析工具 104
6.1 IDA Pro 104
6.1.1 簡介 104
6.1.2 基本操作 105
6.1.3 遠程調試 108
6.1.4 IDAPython 110
6.1.5 常用外掛程式 114
6.2 Radare2 115
6.2.1 簡介及安裝 115
6.2.2 框架組成及互動方式 115
6.2.3 命令行工具 118
6.2.4 r2命令 122
6.3 GDB 125
6.3.1 組成架構 125
6.3.2 工作原理 125
6.3.3 基本操作 127
6.3.4 增強工具 130
6.4 其他常用工具 132
6.4.1 dd 133
6.4.2 file 133
6.4.3 ldd 134
6.4.4 objdump 134
6.4.5 readelf 135
6.4.6 socat 136
6.4.7 strace
6.4.8 strip 137
6.4.9 strings 138
6.4.10 xxd 138
參考資料 139
第7章 漏洞利用開發 141
7.1 shellcode開發 141
7.1.1 shellcode的基本原理 141
7.1.2 編寫簡單的shellcode 141
7.1.3 shellcode變形 143
7.2 Pwntools 145
7.2.1 簡介及安裝 145
7.2.2 常用模組和函式 145
7.3 zio 152
7.3.1 簡介及安裝 152
7.3.2 使用方法 153
參考資料 155
第8章 整數安全 156
8.1 計算機中的整數 156
8.2 整數安全漏洞 157
8.2.1 整數溢出 157
8.2.2 漏洞多發函式 158
8.2.3 整數溢出示例 159
參考資料 161
第9章 格式化字元串 162
9.1 格式化輸出函式 162
9.1.1 變參函式 162
9.1.2 格式轉換 162
9.2 格式化字元串漏洞 164
9.2.1 基本原理 164
9.2.2 漏洞利用 166
9.2.3 fmtstr模組 174
9.2.4 HITCON CMT 2017:pwn200 176
9.2.5 NJCTF 2017:pingme 178
參考資料 182
第10章 棧溢出與ROP 183
10.1 棧溢出原理 183
10.1.1 函式調用棧 183
10.1.2 危險函式 186
10.1.3 ret2libc 186
10.2 返回導向編程 187
10.2.1 ROP簡介 187
10.2.2 ROP的變種 189
10.2.3 示例 191
10.3 Blind ROP 192
10.3.1 BROP原理 192
10.3.2 HCTF 2016:brop 193
10.4 SROP 200
10.4.1 SROP原理 200
10.4.2 pwntools srop模組 204
10.4.3 Backdoor CTF 2017:Fun Signals 204
10.5 stack pivoting 206
10.5.1 stack pivoting原理 206
10.5.2 GreHack CTF 2017:beerfighter 209
10.6 ret2dl-resolve 213
10.6.1 ret2dl-resolve原理 213
10.6.2 XDCTF 2015:pwn200 217
參考資料 222
第11章 堆利用 224
11.1 glibc堆概述 224
11.1.1 記憶體管理與堆 224
11.1.2 重要概念和結構體 226
11.1.3 各類bin介紹 229
11.1.4 chunk相關源碼 231
11.1.5 bin相關源碼 235
11.1.6 malloc_consolidate( )函式 237
11.1.7 malloc( )相關源碼 239
11.1.8 free( )相關源碼 248
11.2 TCache機制 251
11.2.1 數據結構 251
11.2.2 使用方法 252
11.2.3 安全性分析 255
11.2.4 HITB CTF 2018:gundam 257
11.2.5 BCTF 2018:House of Atum 263
11.3 fastbin二次釋放 268
11.3.1 fastbin dup 268
11.3.2 fastbin dup consolidate 273
11.3.3 0CTF 2017:babyheap 275
11.4 house of spirit 283
11.4.1 示例程式 284
11.4.2 LCTF 2016:pwn200 287
11.5 不安全的unlink 291
11.5.1 unsafe unlink 292
11.5.2 HITCON CTF 2016:Secret Holder 295
11.5.3 HITCON CTF 2016:Sleepy Holder 303
11.6 off-by-one 307
11.6.1 off-by-one 307
11.6.2 poison null byte 310
11.6.3 ASIS CTF 2016:b00ks 313
11.6.4 Plaid CTF 2015:PlaidDB 320
11.7 house of einherjar 325
11.7.1 示例程式 325
11.7.2 SECCON CTF 2016:tinypad 328
11.8 overlapping chunks 336
11.8.1 擴展被釋放塊 336
11.8.2 擴展已分配塊 339
11.8.3 hack.lu CTF 2015:bookstore 342
11.8.4 0CTF 2018:babyheap 349
11.9 house of force 353
11.9.1 示例程式 353
11.9.2 BCTF 2016:bcloud 356
11.10 unsorted bin與large bin攻擊 363
11.10.1 unsorted bin into stack 363
11.10.2 unsorted bin attack 367
11.10.3 large bin攻擊 370
11.10.4 0CTF 2018:heapstorm2 374
參考資料 381
第12章 Pwn技巧 383
12.1 one-gadget 383
12.1.1 尋找one-gadget 383
12.1.2 ASIS CTF Quals 2017:Start hard 385
12.2 通用gadget及Return-to-csu 388
12.2.1 Linux程式的啟動過程 388
12.2.2 Return-to-csu 390
12.2.3 LCTF 2016:pwn100 392
12.3 劫持hook函式 395
12.3.1 記憶體分配hook 396
12.3.2 0CTF 2017 - babyheap 397
12.4 利用DynELF泄露函式地址 401
12.4.1 DynELF模組 401
12.4.2 DynELF原理 402
12.4.3 XDCTF 2015:pwn200 403
12.4.4 其他泄露函式 406
12.5 SSP Leak 409
12.5.1 SSP 409
12.5.2 __stack_chk_fail( ) 411
12.5.3 32C3 CTF 2015:readme 412
12.5.4 34C3 CTF 2017:readme_revenge 416
12.6 利用environ泄露棧地址 422
12.7 利用_IO_FILE結構 429
12.7.1 FILE結構體 429
12.7.2 FSOP 431
12.7.3 FSOP(libc-2.24版本) 433
12.7.4 HITCON CTF 2016:House of Orange 438
12.7.5 HCTF 2017:babyprintf 445
12.8 利用vsyscall 449
12.8.1 vsyscall和vDSO 449
12.8.2 HITB CTF 2017:1000levels 451
參考資料 456

作者簡介

楊超,畢業於西安電子科技大學,L-Team成員。目前就職於中國汽研北京分院,從事車聯網安全研究和工具開發。曾在海康威視、斗象科技工作過。活躍在開源社區。

相關詞條

熱門詞條

聯絡我們