感謝 ChaMd5 戰(zhàn)隊的24 名參與編寫的戰(zhàn)隊成員,他們分別是 b0ldfrev、badmonkey、bingo、董浩宇、eevee、飯飯(范鵬)、ggb0n、LFY、luckyu、南宮十六、Pcat、prowes5、PureT、Reshahar、thinker、天河、童帥、Vanish、waynehao、wEik1、Windforce17、xq17、逍遙自在、張智恒。
隨著數(shù)字化和智能化的不斷應(yīng)用和發(fā)展,CTF涉及的技術(shù)領(lǐng)域、比賽的形式、解題的方法等也在快速變化,對參賽者的技術(shù)能力和實戰(zhàn)經(jīng)驗要求越來越高,過往的圖書越來越不能滿足新時代CTFer的需求。
本書是一本與時具進的CTF著作,緊跟CTF變化趨勢,圍繞Web安全、密碼學、逆向工程、Pwn、隱寫術(shù)、數(shù)字取證、代碼審計7大傳統(tǒng)核心領(lǐng)域以及智能合約、工控、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)4大新興領(lǐng)域,全面、系統(tǒng)地講解了CTFer需要掌握的安全技術(shù)及其進階知識,精心設(shè)計和挑選了大量的實操案例和典型真題,并分享了很多流行的戰(zhàn)術(shù)和戰(zhàn)法。既適合作為新人系統(tǒng)學習的入門教程,又適合身經(jīng)百戰(zhàn)的CTFer作為備賽時的定海神針,總而言之,本書希望能指導(dǎo)CTFer在新時代的比賽中取得傲人的成績。
本書是國內(nèi)老牌CTF戰(zhàn)隊ChaMd5核心成員多年實戰(zhàn)經(jīng)驗的總結(jié),得到了來自百度、騰訊、綠盟、奇安信等多家互聯(lián)網(wǎng)企業(yè)以及Lilac、Nu1L Team、Redbud、W&M、米斯特、網(wǎng)絡(luò)尖刀等國內(nèi)知名CTF戰(zhàn)隊和SRC安全團隊的20余位專家的好評和一致推薦。
本書提供一站式CTF在線學習平臺CTFHub(www.ctfhub.com),平臺為CTFer提供了最新賽事消息、學習技能樹、歷年的真題及其解析、完善的題目環(huán)境及配套的Writeup、常見CTF工具及其使用。
(1)緊跟時代步伐:CTF隨著技術(shù)的應(yīng)用和發(fā)展不斷變化,本書從新賽事、新題目、新打法、新技術(shù)4個維度指導(dǎo)讀者成為新時代CTFer。
(2)作者背景權(quán)威:ChaMd5是國內(nèi)的王牌安全團隊,團隊核心成員來自阿里、滴滴、啟明星辰、綠盟、知道創(chuàng)宇、奇安信、永信至誠、360、陌陌、牛盾、安恒、啟明等公司。
(3)作者經(jīng)驗豐富:自成立以來,在CTF比賽、工控安全比賽、IoT比賽、AI安全比賽、車聯(lián)網(wǎng)安全比賽等多種安全賽事中屢獲佳績,累計獲得6次冠軍,為企業(yè)報告安全漏洞超10萬個。
(4)覆蓋11大領(lǐng)域:全面覆蓋Web安全、密碼學、逆向工程、Pwn、隱寫術(shù)、數(shù)字取證、代碼審計7大傳統(tǒng)核心領(lǐng)域以及智能合約、工控、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)4大新興領(lǐng)域,緊跟安全技術(shù)的發(fā)展。
(5)從基礎(chǔ)到進階:不僅詳細講解11大技術(shù)領(lǐng)域的基礎(chǔ)和原理,而且還針對性地講解了它們的進階知識、技巧和心得。
(6)大量案例真題:不僅精心設(shè)計了大量的實操案例來幫助讀者理解,而且還精心挑選了大量的典型真題,給出了真題的解法以及比賽的戰(zhàn)術(shù)、戰(zhàn)法。
(7)22位專家力薦:來自百度、騰訊、綠盟、奇安信等多家互聯(lián)網(wǎng)企業(yè)的專家,來自Lilac、Nu1L Team、Redbud、W&M、米斯特、網(wǎng)絡(luò)尖刀等國內(nèi)知名CTF戰(zhàn)隊和安全團隊的專家,以及來自高校的學者聯(lián)袂推薦。
前 言
為什么要寫這本書
2016年ChaMd5安全團隊成立,轉(zhuǎn)眼間已經(jīng)7年了。我們在各SRC平臺和CTF比賽中獲得了不少獎項,逐漸意識到團隊成員應(yīng)該將這幾年的經(jīng)驗和技術(shù)沉淀下來,為安全行業(yè)的新人以及熱愛安全行業(yè)、想提升技術(shù)的伙伴們提供幫助。
2021年年中,本著為行業(yè)做點貢獻的想法,我開始籌劃和構(gòu)思寫書,這個時候恰好應(yīng)邀為Nu1L戰(zhàn)隊所著的《從0到1:CTFer成長之路》寫書評,拜讀該書樣章后受到了很大的啟發(fā)。又逢我們的隊長L1n3為內(nèi)部成員和安全愛好者搭建了CTFHub平臺,對歷年CTF比賽真題進行復(fù)現(xiàn),由此我發(fā)現(xiàn)一本僅圍繞CTF進行討論的書可能缺少亮點,便考慮怎樣才能對安全從業(yè)人員或者想從事安全方面工作的人提供更實際的
幫助。
2021年年底,我有幸遇到了機械工業(yè)出版社的楊福川編輯和韓蕊編輯,他們了解到我們團隊在行業(yè)內(nèi)獲得過很多獎項,問我們?yōu)槭裁床粚懸槐緯。在和楊福川編輯多次交流后,我們確定了本書的框架把學生時期的CTF比賽和工作中的實戰(zhàn)相結(jié)合。為了寫好這本書,我們研究了市面上相關(guān)圖書涉及的安全技術(shù)知識,將一些未被提及的內(nèi)容歸納總結(jié)到本書中。
本書把20多位業(yè)內(nèi)資深專家近年來積累的經(jīng)驗和行業(yè)技巧毫無保留地分享給大家,我相信再好的技術(shù)也需要傳承,如果舍不得分享,那就沒有了價值。
作者簡介
ChaMd5安全團隊
國內(nèi)老牌CTF戰(zhàn)隊,成立于2016年,為維護企業(yè)安全建設(shè)而成立,竭盡全力培養(yǎng)安全人才,服務(wù)于各大企業(yè)。
專注于算法加解密、安全漏洞挖掘、CTF競賽及安全人才培養(yǎng)。團隊成員200余人,大多數(shù)來自阿里、滴滴、啟明星辰、綠盟、知道創(chuàng)宇、奇安信、永信至誠、360、陌陌、牛盾、安恒、啟明等公司,也有部分在校學生與自由職業(yè)者。
團隊自成立以來,在CTF比賽、工控安全比賽、IoT比賽、AI安全比賽、車聯(lián)網(wǎng)安全比賽等多種安全賽事中屢獲佳績,累計獲得6次冠軍。長期與企業(yè)保持良好合作關(guān)系,累計向企業(yè)報告安全漏洞超過10萬個,多次在SRC中獲得第1名,曾獲得華為、螞蟻金服、百度、京東、滴滴、微軟和蘋果等多家企業(yè)的感謝和好評。
ChaMd5團隊戰(zhàn)績(部分):
(1)CTF比賽
2021年 第四屆強網(wǎng)擬態(tài)第1名
2021年 長安杯總決賽一等獎
2021年 巔峰極客第1名
(2)工控安全比賽
2020年 之江杯第1名
2018年 賽博地球杯工業(yè)互聯(lián)網(wǎng)安全大賽·線下 第二名
(3)IoT安全比賽
2020年西湖論劍IOT挑戰(zhàn)賽第1名
(4)AI安全比賽
2022年 CCF BDCI 競技賽單賽題決賽二等獎
(5)車聯(lián)網(wǎng)安全比賽
2022年 CICV 智能網(wǎng)聯(lián)汽車漏洞挖掘賽·線下一等獎
2021年 第二屆中國智能網(wǎng)聯(lián)汽車大賽·天融信杯銅獎
2021年 世界智能駕駛挑戰(zhàn)賽銅獎
(6)SRC成績
2022年BSRC(百度)獲得團隊第1名
2017-2020年DSRC團隊第1名
2020年JSRC(京東)團隊年度第二名
2020年網(wǎng)易SRC團隊年度第二名
2020年字節(jié)跳動SRC團隊年度第三名
2020年360SRC年度團隊第二名
2020年TSRC(騰訊)年度合作伙伴獎
2019年華為云年度團隊二等獎
2019年MTSRC(美團)年度團隊第二名
2019年ASRC(阿里)年度合作伙伴獎
目 錄
贊譽
前言
第1章 Web安全1
1.1 SQL注入1
1.1.1 SQL注入基礎(chǔ)1
1.1.2 SQL注入進階16
1.2 XSS 27
1.2.1 XSS類型27
1.2.2 XSS Bypass技巧29
1.2.3 XSS進階35
1.2.4 XSS CTF例題43
1.3 跨站請求偽造44
1.4 服務(wù)器端請求偽造46
1.4.1 SSRF利用47
1.4.2 SSRF Bypass技巧57
1.4.3 SSRF進階60
1.5 任意文件上傳70
1.5.1 客戶端校驗70
1.5.2 服務(wù)端校驗72
1.5.3 任意文件上傳進階85
1.6 任意文件包含89
1.6.1 常見的利用方式89
1.6.2 任意文件包含進階93
1.7 命令注入95
1.7.1 常見危險函數(shù)96
1.7.2 常見注入方式97
1.7.3 Bypass技巧99
1.7.4 命令注入進階102
1.8 XML外部實體注入104
1.8.1 XML的基本語法104
1.8.2 利用方式106
1.8.3 Bypass技巧107
1.9 反序列化漏洞108
1.9.1 什么是反序列化108
1.9.2 PHP反序列化109
1.10 服務(wù)端模板注入115
1.10.1 模板引擎115
1.10.2 服務(wù)端模板注入原理116
1.10.3 Flask-Jinja2模板注入117
1.10.4 PHP-Smarty模板注入126
1.10.5 CTF實戰(zhàn)分析129
1.11 邏輯漏洞132
1.11.1 登錄體系安全133
1.11.2 業(yè)務(wù)數(shù)據(jù)安全134
1.11.3 會話權(quán)限安全139
1.11.4 密碼重置漏洞144
1.11.5 CTF實戰(zhàn)分析150
第2章 密碼學153
2.1 現(xiàn)代密碼學153
2.1.1 計算安全和無條件安全153
2.1.2 對稱密碼學154
2.1.3 非對稱密碼學155
2.2 古典密碼學156
2.2.1 置換密碼156
2.2.2 代換密碼159
2.2.3 古典密碼學的常用工具和方法164
2.3 分組密碼的結(jié)構(gòu)165
2.3.1 常見的網(wǎng)絡(luò)結(jié)構(gòu)165
2.3.2 常見的加密模式166
2.3.3 常見的分組加密算法170
2.4 針對分組密碼的攻擊方式170
2.5 差分分析攻擊實例:對DES的差分
攻擊172
2.6 格密碼182
2.6.1 格理論知識基礎(chǔ)182
2.6.2 knapsack密碼系統(tǒng)186
2.6.3 NTRU密碼系統(tǒng)188
2.6.4 基于Lattice的一些攻擊場景191
第3章 逆向工程194
3.1 初識逆向工程194
3.1.1 逆向工程基礎(chǔ)194
3.1.2 匯編語言基礎(chǔ)196
3.1.3 Windows逆向工程198
3.1.4 Linux逆向工程206
3.2 逆向工程進階207
3.2.1 逆向工程常用算法207
3.2.2 代碼保護技術(shù)210
3.2.3 工具的高級應(yīng)用217
3.2.4 Hook和DLL注入技術(shù)230
3.2.5 現(xiàn)代逆向工具237
3.3 高級語言逆向241
3.3.1 Python語言逆向241
3.3.2 .NET程序逆向245
3.3.3 WebAssembly程序逆向254
3.3.4 Go程序逆向256
3.3.5 Rust程序逆向272
3.4 Android平臺逆向工程277
3.4.1 Android靜態(tài)分析277
3.4.2 Android動態(tài)分析279
3.4.3 Android代碼保護技術(shù)282
3.4.4 Android Hook和脫殼技術(shù)283
3.5 逆向工程心得與逆向?qū)W習285
3.5.1 關(guān)于逆向心得285
3.5.2 關(guān)于逆向?qū)W習286
第4章 Pwn方向288
4.1 Pwn基礎(chǔ)288
4.1.1 常用三大工具288
4.1.2 Linux基礎(chǔ)295
4.1.3 Glibc內(nèi)存管理機制306
4.2 Pwn初探309
4.2.1 棧漏洞309
4.2.2 格式化字符串漏洞318
4.2.3 堆漏洞331
4.2.4 整數(shù)漏洞341
4.3 Pwn進階342
4.3.1 棧相關(guān)技巧342
4.3.2 格式化字符串漏洞352
4.3.3 堆漏洞361
4.3.4 IO_FILE利用371
4.3.5 特殊場景下的Pwn375
第5章 隱寫術(shù)390
5.1 圖片隱寫390
5.1.1 在文件結(jié)構(gòu)上直接附加信息390
5.1.2 LSB隱寫394
5.1.3 Exif395
5.1.4 盲水印396
5.2 音頻隱寫397
5.2.1 MP3隱寫397
5.2.2 音頻頻譜隱寫398
5.3 視頻隱寫399
5.4 其他載體的隱寫方式399
5.4.1 PDF隱寫399
5.4.2 DOC隱寫400
第6章 數(shù)字取證402
6.1 數(shù)字取證概述402
6.1.1 數(shù)字取證的發(fā)展402
6.1.2 數(shù)字取證規(guī)范和法律依據(jù)403
6.2 數(shù)字取證技術(shù)入門404
6.2.1 存儲與恢復(fù)404
6.2.2 Windows系統(tǒng)級取證通識406
6.2.3 UNIX/Linux系統(tǒng)級取證通識409
6.2.4 Mac OS系統(tǒng)級取證通識411
6.3 數(shù)字取證技術(shù)實務(wù)進階414
6.3.1 文件結(jié)構(gòu)分析與恢復(fù)414
6.3.2 鏡像還原與仿真417
6.3.3 內(nèi)存取證高級分析417
6.3.4 數(shù)字取證實戰(zhàn)分析423
第7章 代碼審計431
7.1 Java反序列化漏洞431
7.1.1 Java反序列化漏洞原理431
7.1.2 Ysoserial工具介紹437
7.1.3 CTF Java Web題目詳解438
7.2 Python審計方向440
7.2.1 常見漏洞審計440
7.2.2 進階漏洞審計445
7.2.3 自動化代碼審計451
第8章 智能合約安全455
8.1 合約工具配置455
8.1.1 區(qū)塊鏈與以太坊455
8.1.2 基礎(chǔ)工具配置456
8.1.3 Remix的使用456
8.1.4 Etherscan的使用459
8.2 合約常見漏洞461
8.2.1 無符號整數(shù)溢出461
8.2.2 假充值漏洞462
8.2.3 跨合約調(diào)用463
8.2.4 call漏洞合約464
8.2.5 短地址攻擊465
8.2.6 重入攻擊467
8.2.7 tx.origin身份認證漏洞469
8.2.8 可控隨機數(shù)470
8.2.9 異常紊亂漏洞470
8.3 CTF題目分析471
8.3.1 內(nèi)聯(lián)匯編471
8.3.2 區(qū)塊鏈生態(tài)類475
8.4 智能合約漏洞分析實戰(zhàn)477
8.4.1 整數(shù)溢出造成的合約攻擊477
8.4.2 跨合約調(diào)用漏洞造成的攻擊477
第9章 工控安全479
9.1 工業(yè)控制系統(tǒng)概述479
9.1.1 基本概念和主要元件479
9.1.2 工業(yè)控制系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)481
9.2 工業(yè)控制系統(tǒng)協(xié)議482
9.2.1 Modbus482
9.2.2 S7Comm489
9.2.3 DNP3490
9.3 EtherNet/IP491
9.3.1 BACnet491
9.3.2 OPC492
9.4 工業(yè)控制系統(tǒng)編程493
9.4.1 PLC編程493
9.4.2 HMI編程508
9.5 工業(yè)控制系統(tǒng)逆向512
9.5.1 固件逆向512
9.5.2 VxWorks內(nèi)核機制分析519
9.5.3 GoAhead Web Server執(zhí)行流程
分析522
9.6 工業(yè)控制系統(tǒng)滲透527
9.6.1 工控網(wǎng)絡(luò)特點527
9.6.2 資產(chǎn)探測530
9.6.3 漏洞利用533
第10章 物聯(lián)網(wǎng)安全535
10.1 物聯(lián)網(wǎng)基礎(chǔ)理論535
10.1.1 ARM535
10.1.2 MIPS538
10.2 物聯(lián)網(wǎng)安全分析539
10.2.1 仿真環(huán)境搭建539
10.2.2 固件的提取、解密和分析545
10.2.3 分析調(diào)試工具549
10.3 相關(guān)漏洞原理550
10.3.1 Web漏洞550
10.3.2 緩沖區(qū)溢出551
10.3.3 后門559
10.4 漏洞分析559
10.4.1 Web漏洞560
10.4.2 緩沖區(qū)溢出569
10.4.3 內(nèi)置后門及后門植入574
第11章 車聯(lián)網(wǎng)安全578
11.1 什么是車聯(lián)網(wǎng)578
11.2 車聯(lián)網(wǎng)安全競賽579
11.2.1 總線逆向破解580
11.2.2 線上奪旗賽591
11.2.3 實車漏洞挖掘594
11.3 車聯(lián)網(wǎng)安全實戰(zhàn)596
11.3.1 TBOX安全596
11.3.2 車機安全603
11.3.3 充電樁安全615