內容簡介
本書採用理論與案例相結合的形式,全面講解傳統網路安全競賽CTF解題賽中五大類重點知識和技能。
全書共17章,其中第1~3章為第1篇Web安全,從原理層面講解了最常見的PHP相關安全問題,以及檔案上傳漏洞、檔案包含漏洞、命令執行漏洞、SQL注入漏洞、SSRF漏洞等常見Web漏洞的原理與利用;第4~6章為第2篇Crypto密碼,主要介紹了密碼學基礎、常見編碼、古典密碼學和現代密碼學等相關內容;第7~10章為第3篇MISC安全,主要介紹了隱寫術、壓縮檔分析、流量分析和取證分析等相關內容;第11~13章為第4篇Reverse逆向工程,主要介紹了逆向工程基本概念、計算機相關原理、逆向相關基礎、常規逆向分析思路、反調試對抗技術等內容;第14~17章為第5篇PWN,主要介紹了基礎環境準備、棧溢出、堆溢出等漏洞的原理與利用。
本書所有案例都配有相關實踐內容,能夠更有效地幫助讀者進一步理解相關技能。
本書旨在幫助讀者相對快速且完整地構建一個CTF實戰所需的基礎知識框架,並通過案例學習相關技能,完成從入門到提升,適合所有網路安全愛好者及從業者參考閱讀,也可作為高等院校網路安全相關實踐課程的參考用書。
圖書目錄
第1篇 Web安全
第1章 Web安全基礎知識
1.1 Web套用體系結構/
1.1.1 Web套用工作流程/
1.1.2 Web套用體系結構內的術語/
1.2 HTTP詳解/
1.2.1 HTTP概述/
1.2.2 HTTP請求方法/
1.2.3 HTTP請求狀態碼/
1.2.4 HTTP協定的 URL/
1.2.5 HTTP回響頭信息/
1.3 HTTP安全/
1.3.1 URL編碼的基本概念/
1.3.2 UA頭偽造漏洞的概念及利用方法/
1.3.3 返回頭分析方法/
1.3.4 來源偽造漏洞的概念及利用方法/
1.3.5 案例解析——[極客大挑戰 2019]HTTP/
1.4 基礎工具使用/
1.4.1 HackBar 外掛程式/
1.4.2 SwitchyOmega 代理外掛程式/
1.4.3 Wappalyzer 外掛程式/
1.4.4 EditThisCookie 外掛程式/
1.4.5 BurpSuite/
1.4.6 Postman/
1.4.7 案例解析——BUU BURP COURSE 1/
1.5 信息泄露/
1.5.1 Dirsearch 掃描器使用/
1.5.2. git與.svn泄露與利用/
1.5.3 其他源碼泄露/
1.5.4 實戰練習/
第2章 Web安全入門——PHP 相關知識
2.1 PHP的基礎知識/
2.2 PHP的弱類型特性/
2.2.1 什麼是強類型與弱類型/
2.2.2 弱類型漏洞產生原理/
2.2.3 MD5、HASH 相關漏洞利用/
2.3 PHP變數覆蓋漏洞/
2.3.1 PHP變數覆蓋的概念/
2.3.2 PHP變數覆蓋的函式/
2.3.3 PHP變數覆蓋漏洞的利用方法/
2.3.4 案例解析——[BJDCTF2020]Mark loves cat/
2.4 PHP檔案包含漏洞/
2.4.1 PHP中常見的檔案包含函式/
2.4.2 PHP中檔案包含漏洞的概念/
2.4.3 PHP本地檔案包含漏洞/
2.4.4 PHP遠程檔案包含漏洞/
2.4.5 PHP中常見的偽協定/
2.4.6 案例解析——[BJDCTF2020]ZJCTF/
2.5 PHP代碼執行漏洞/
2.5.1 PHP中代碼漏洞的概念/
2.5.2 PHP代碼執行漏洞函式/
2.5.3 案例解析——虎符網路安全大賽 Unsetme/
2.6 PHP反序列化漏洞/
2.6.1 PHP的類與對象/
2.6.2 PHP的序列化與反序列化/
2.6.3 PHP中的反序列化漏洞/2.6.4案例解析——2019強網杯 UPLOAD/
第3章 常見Web漏洞解析
3.1 命令執行漏洞/
3.1.1 Bash與 CMD常用命令/
3.1.2 命令執行漏洞的基礎概念/
3.1.3 過濾敏感字元串繞過的漏洞案例/
3.1.4 無回顯的命令執行漏洞案例/
3.1.5 不出網的命令執行漏洞案例/
3.1.6 案例解析——[GXYCTF2019]Ping Ping Ping/
3.2 SQL注入漏洞/
3.2.1 SQL語句基礎知識/
3.2.2 SQL注入漏洞的基礎概念/
3.2.3 SQL手工注入方法/
3.2.4 SQL注入利用方式分類——布爾盲注利用/
3.2.5 SQL注入利用方式分類——時間盲注利用/
3.2.6 案例解析——CISCN2019 Hack World/
3.3 XSS漏洞/
3.3.1 XSS漏洞的基礎概念/
3.3.2 XSS漏洞分類/
3.3.3 HTML中 XSS 常利用事件/
3.3.4 案例解析——BUU XSS COURSE 1/
3.4 SSRF漏洞/
3.4.1 curl命令的使用/
3.4.2 SSRF漏洞的基礎概念/
3.4.3 SSRF常見漏洞點的尋找方法/
3.4.4 SSRF漏洞利用方法/
3.4.5 Gopherus工具使用案例/
3.4.6 案例解析——[網鼎杯 2020 玄武組]SSRFMe/
第2篇 Crypto密碼
第4章 密碼學概論
4.1 密碼學發展歷程/
4.2 編碼/
4.2.1 Base編碼/
4.2.2 其他編碼/
4.2.3 案例解析——AFCTF 2018 BASE/
第5章 古典密碼學
5.1 單表替換密碼/
5.1.1 愷撒密碼/
5.1.2 Atbash密碼/
5.1.3 摩斯密碼/
5.1.4 仿射密碼/
5.1.5 案例解析——AFCTF 2018 Single/
5.2 多表替換密碼/
5.2.1 維吉尼亞密碼/
5.2.2 普萊菲爾密碼/
5.2.3 希爾密碼/
5.2.4 自動密鑰密碼/
5.2.5 案例解析——AFCTF 2018 Vigenère/
5.3 其他類型密碼/
5.3.1 培根密碼/
5.3.2 柵欄密碼/
5.3.3 曲路密碼/
5.3.4 豬圈密碼/
5.3.5 跳舞的小人/
5.3.6 鍵盤密碼/
5.3.7 案例解析——SWPUCTF 2019 偉大的偵探/
第6章 現代密碼學
6.1 非對稱加密體系/
6.1.1 RSA基礎/
6.1.2 RSA基礎攻擊方式/
6.1.3 RSA進階攻擊方式/
6.1.4 ElGamal算法介紹/
6.1.5 ECC算法介紹/
6.1.6 案例解析——SWPUCTF 2020 happy/
6.2 對稱加密體系/
6.2.1 AES/
6.2.2 分組模式介紹/
6.2.3 ECB電子密碼本模式/
6.2.4 CBC密碼分組連結模式/
6.2.5 CFB密文反饋模式/
6.2.6 案例解析——SWPUCTF 2020 cbc1/
6.3 流密碼/
6.3.1 偽隨機數/
6.3.2 LCG/
6.3.3 案例解析——GKCTF 2021 Random/
6.4 哈希函式/
6.4.1 哈希函式介紹/
6.4.2 哈希長度擴展攻擊/
6.4.3 案例解析——De1CTF 2019 SSRFMe/
6.5 國密算法/
6.5.1 SM1分組密碼算法/
6.5.2 SM2橢圓曲線公鑰密碼/
6.5.3 SM3密碼雜湊函式/
6.5.4 SM4分組密鑰算法/
6.5.5 案例解析——巔峰極客 2021 learnSM4/
第3篇 MISC安全
第7章 隱寫術
7.1 檔案結構類型及識別/
7.2 圖片隱寫/
7.2.1 附加字元串/
7.2.2 圖片寬高/
7.2.3 最低有效位(LSB)/
7.2.4 盲水印/
7.2.5 案例解析——[NISACTF 2022]huaji?/
7.3 音頻隱寫/
7.3.1 摩爾斯電碼與音頻隱寫/
7.3.2 MP3音頻/
7.3.3 波形圖/
7.3.4 頻譜圖/
7.3.5 案例解析——[SCTF 2021]in_the_vaporwaves/
7.4 視頻隱寫/
7.4.1 視頻幀的分離/
7.4.2 案例解析——[2019RoarCTF]黃金6年/
7.5 文檔隱寫/
7.5.1 Word文檔隱寫/
7.5.2 PDF文檔隱寫/
7.5.3 案例解析——[UTCTF2020]docx/
第8章 壓縮檔分析
8.1 常見壓縮檔案格式/
8.2 常見壓縮檔破解方法/
8.2.1 偽加密破解/
8.2.2 暴力破解/
8.2.3 字典破解/
8.2.4 掩碼攻擊/
8.2.5 明文攻擊/
8.2.6 CRC32碰撞/
8.2.7 案例解析——[GUET-CTF2019]zips/
第9章 流量分析
9.1 網路通信與協定/
9.1.1 通信方式/
9.1.2 網路協定概述/
9.2 Wireshark操作介紹/
9.2.1 顯示過濾器/
9.2.2 追蹤流與導出流/
9.2.3 查找內容/
9.3 Web流量分析/
9.3.1 HTTP 流量分析/
9.3.2 webshell混淆流量分析/
9.3.3 TLS 流量分析/
9.3.4 案例解析——[INSHack2019]Passthru/
9.4 USB流量分析/
9.4.1 滑鼠流量分析/
9.4.2 鍵盤流量分析/
9.4.3 案例解析——[NISACTF 2022]破損的flag/
第10章 取證分析
10.1磁碟取證/
10.1.1 檔案系統/
10.1.2 磁碟取證方法/
10.1.3 案例解析——[XMAN2018排位賽]file/
10.2 記憶體取證/
10.2.1 volatility介紹/
10.2.2 案例解析——[隴劍杯 2021]WiFi/
第4篇 Reverse逆向工程
第11章 逆向分析基礎
11.1 逆向工程/
11.1.1 逆向與CTF/
11.1.2 逆向分析的意義/
11.2 計算機部件/
11.2.1 CPU/
11.2.2 記憶體/
11.2.3 記憶體分配機制/
11.2.4“分段”與“分頁”/
11.2.5 記憶體映射/
11.3 執行檔/
11.3.1 PE格式概述/
11.3.2 PE檔案載入/
11.3.3 ELF格式概述/
11.4 暫存器/
11.4.1 暫存器分類/
11.4.2 通用暫存器/
11.4.3 ESI與EDI/
11.4.4 ESP與EBP/
11.4.5 段暫存器/
11.4.6 標誌暫存器/
11.4.7 指令指針暫存器/
11.5 彙編語言/
11.5.1 彙編語言簡介/
11.5.2 彙編指令格式/
11.5.3 數據傳送指令/
11.5.4 算數運算指令/
11.5.5 邏輯運算指令/
11.5.6 移位指令/
11.5.7 條件轉移指令/
11.5.8 棧操作指令/
11.5.9 函式調用/
11.5.10 中斷指令/
第12章 逆向分析法
12.1 常用工具/
12.1.1 IDA Pro/
12.1.2 OllyDbg/
12.2 殼/
12.2.1 壓縮殼/
12.2.2 加密殼/
12.2.3 軟體殼識別/
12.2.4 幾類脫殼方式/
12.3 加解密/
12.3.1 數據編碼/
12.3.2 數據運算/
12.3.3 特徵識別/
12.4 多語言逆向/
12.4.1 .NET/
12.4.2 Python/
12.4.3 GO/
第13章 代碼對抗技術
13.1 查殼與脫殼/
13.1.1 UPX介紹/
13.1.2 尋找OEP/
13.1.3 單步脫殼法/
13.1.4 ESP定律法/
13.1.5 記憶體轉儲/
13.1.6 修復IAT/
13.2花指令/
13.2.1花指令簡介/
13.2.2花指令識別/
13.2.3花指令修復/
13.3 反調試/
13.3.1 反調試簡介/
13.3.2 API反調試/
13.3.3 PEB反調試/
13.3.4 TLS反調試/
13.3.5 進程名反調試/
13.3.6 視窗名反調試/
13.3.7 時間戳反調試/
13.4 z3約束求解器/
13.4.1 z3安裝/
13.4.2 z3使用基礎/
13.5 SMC技術/
第5篇 PWN
第14章 PWN基礎知識
14.1 CTF與PWN/
14.2 執行檔/
14.2.1 ELF檔案格式解析/
14.2.2 程式記憶體布局/
14.2.3 延遲綁定技術/
14.3 Linux安全保護機制/
14.3.1 ASLR技術/
14.3.2程式ASLR之PIE技術/
14.3.3 No-eXecute技術/
14.3.4 RELRO技術/
14.4 PWN工具/
14.4.1 GDB及外掛程式使用/
14.4.2 pwntools/
第15章 棧記憶體漏洞
15.1 shellcode開發/
15.1.1 shellcode原理/
15.1.2 shellcode編寫/
15.1.3 shellcode變形/
15.2 緩衝區溢出原理/
15.2.1 函式調用棧/
15.2.2 棧溢出原理/
15.3 緩衝區溢出攻擊/
15.3.1 棧溢出基本攻擊/
15.3.2 shellcode注入攻擊/
15.4 返回導向編程技術/
15.4.1 ROP原理/
15.4.2 ROP利用/
15.4.3 ROP變種利用/
15.5 棧溢出緩解機制/
15.5.1 canary原理/
15.5.2 canary bypass/
第16章 堆記憶體漏洞
16.1 堆塊結構與管理/
16.1.1 堆與棧的區別/
16.1.2 malloc實現原理/
16.1.3 malloc_chunk結構/
16.1.4 chunk記憶體對齊/
16.1.5 free實現原理/
16.1.6 fast bin管理機制/16.1.7unsorted bin管理機制/
16.2 釋放後重用漏洞/
16.2.1 UAF漏洞成因/
16.2.2 UAF漏洞利用/
16.3 堆溢出漏洞/
16.3.1 堆溢出漏洞成因/
16.3.2 堆溢出漏洞利用/
16.4 雙重釋放漏洞/
16.4.1 double free漏洞成因/
16.4.2 double free攻擊方式/
16.4.3 double free漏洞利用/
第17章 其他類型漏洞
17.1 整數漏洞/
17.1.1 整數概念與類型/
17.1.2 整數溢出利用/
17.2 格式化字元串漏洞/
17.2.1 變參函式/
17.2.2 格式轉換/
17.2.3 漏洞原理/
17.2.4 利用方式/
17.2.5 漏洞利用/