連FB都被pwned了,CTF參賽者的威力可見一斑!
全世界的駭客精英公開對幹,沒有CTF的話,這些血淋淋的場景將出現在你我的數位生活中。
▌pwn是什麼?▌
pwn這個字來自於own,當你發自己被「pwned」的時候,表示重要的隱私資訊已經外洩了!
▌主攻對象Linux▌
全世界絕大部分的伺服器運作在UNIX/Linux之下,而全世界最多人使用的行動裝置作業系統Android也是以Linux為基礎的,因此從伺服器和手機端的角度來看,Linux一定是最重要,也是主攻的對象。
▌經典例題、深入解說▌
本書在素材的選擇上連續、完整,每個知識點均配以經典例題,並花費了大量篇幅深入講解,儘可能地還原分析思路和解題過程。讀者完全可以依據本書自主、系統性地學習,達到舉一反三的效果。
本書從CTF本身開始說明,接下來就是最重要的二進位基礎,這也是一切電腦科學的基礎,全書也說明了ELF檔案模式、組合語言基礎(雖老但最好用),之後直接跳入Linux的安全機制。最近流行的虛擬機及容器Docker也搭配應用來建置環境。之後再使用了各種分析工具來研究系統的漏洞,更進一步利用這些漏洞開發出攻擊的手段。此外也針對了不同的資料型態如整數、格式化字串等方式來進行漏洞的使用。當然最重要的堆疊溢出及ROP方法也是CTF必學的。在記憶體漏洞方面,堆積的利用當然是不可或缺的。在綜合了上面的技能之後,本書最後一章的精華,就是PWN的技巧,在網路世界中,被PWN真的就完了!
適合讀者
本書主要針對CTF 初學者,也適合對 CTF 感興趣的人群學習。
作者
楊超
畢業於西安電子科技大學,L-Team成員。目前就職於中國汽研北京分院,從事車聯網安全研究和工具開發工作。曾任職於海康威視、斗象科技。活躍在開源社區, GitHub:firmianay。
審校者簡介
吳石,騰訊eee戰隊
騰訊安全2016年成立的一支具有國際領先技術實戰能力的CTF戰隊。戰隊核心成員均來自騰訊安全科恩實驗室,導師由騰訊安全科恩實驗室負責人、國際著名網路安全專家吳石擔任。目前,戰隊成員已連續4年參與征戰DEFCON決賽,並在HITCON、PlaidCTF、SECCON等世界頂級安全賽事中,不斷刷新歷史最好成績,為國際間的技術交流與人才培養奠定基礎。
目錄
01 CTF 簡介
1.1 賽事介紹
1.2 知名賽事及會議
1.3 學習經驗
02 二進位檔案
2.1 從原始程式碼到可執行檔
2.2 ELF 檔案格式
2.3 靜態連結
2.4 動態連結
03 組合語言基礎
3.1 CPU 架構與指令集
3.2 x86/x64 組合語言基礎
04 Linux 安全機制
4.1 Linux 基礎
4.2 Stack Canaries
4.3 No-eXecute
4.4 ASLR 和PIE
4.5 FORTIFY_SOURCE
4.6 RELRO
05 分析環境架設
5.1 虛擬機器環境
5.2 Docker 環境
06 分析工具
6.1 IDA Pro
6.2 Radare2
6.3 GDB
6.4 其他常用工具
07 漏洞利用開發
7.1 shellcode 開發
7.2 Pwntools
7.3 zio
08 整數安全
8.1 電腦中的整數
8.2 整數安全性漏洞
09 格式化字串
9.1 格式化輸出函數
9.2 格式化字串漏洞
10 堆疊溢位與ROP
10.1 堆疊溢位原理
10.2 返回導向程式設計
10.3 Blind ROP
10.4 SROP
10.5 stack pivoting
10.6 ret2dl-resolve
11 堆積利用
11.1 glibc 堆積概述
11.2 TCache 機制
11.3 fastbin 二次釋放
11.4 house of spirit
11.5 不安全的unlink
11.6 off-by-one
11.7 house of einherjar
11.8 overlapping chunks
11.9 house of force
11.10 unsorted bin 與large bin 攻擊
12 Pwn 技巧
12.1 one-gadget
12.2 通用gadget 及Return-to-csu
12.3 綁架hook 函數
12.4 利用DynELF 洩露函數位址
12.5 SSP Leak
12.6 利用environ 洩露堆疊位址
12.7 利用_IO_FILE 結構
12.8 利用vsyscall
序/導讀
序
時間回到2017 年7 月。
隨著資訊安全的發展,CTF 競賽開始引人關注。這種有趣的競賽模式非常有助技術切磋和快速學習。在西安電信協會(XDSEC)學長的帶領下,當時的我已經接觸CTF 賽題有較長時間了。由於當時網路上還沒有比較完善和系統的資料,本著開放原始碼精神、自利利他的目的,我在GitHub 上創建了一個稱為"CTF-All-In-One" 的專案,並給了自己第1 個star。
此後,這個專案日漸完善,吸引和幫助了不少初學者,到現在已經收穫了超過2100 個star,在此向所有為技術分享與進步作出貢獻的CTF 出題人和專案貢獻者們致敬!
收到劉皎老師的約稿邀請是在2018 年10 月,那時我剛上大四。抱著試試看的心情,我驚喜、惶恐地接受了這項挑戰。接下來就是定目錄,交樣章,並在2019 年1 月簽訂了《約稿合約》。沒想到的是,寫作的道路竟如此艱難:每一章、每一節、每一個例子甚至每一個詞都要細斟慢酌,生怕誤人子弟。由於學業和工作上的事情較多,最初參與的兩個朋友相繼離開了,我本人也多次想放棄。就在這樣反反覆覆的狀態下,一直到2020 年7 月才完成初稿。經過幾輪艱苦的校稿,終於在2020 年10 月簽訂了《出版合約》,兩年時間就這樣一晃過去了。
現在再回頭看,本書寫作的過程基本就是一個「現學現賣」的過程。我一邊學習新知識,一邊不斷調整內容框架。在學習的路上,我曾遇到太多的分岔、踩過無數坑,正因為如此,我儘量把自己的經驗寫進書裡,讓讀者可以快速獲得關鍵技術、避免踩坑和重複工作。所以,與其稱它為一本書,倒不如說這是一座經過校對、打磨,並最終以書的形式呈現的 知識庫。當然,在此過程中,我也發現寫作是一種非常有效的訓練方式:很明顯,透過梳理基礎知識和想法,我不僅系統掌握了相關知識,也明確了想法,對從事相關工作大有裨益。
我們期待有更多人參與進來,拿出Web 篇、Reverse 篇、Crypto 篇等更好的作品,讓這個系列更配得上「權威」二字。資訊安全是一門有趣的學科,我為自己當初的選擇高興,也希望閱讀本書的你,同樣為自己的選擇而激動。作為一本針對初學者的書,讀者中一定有不少中學生。全國中學生網路安全競賽每年都在我的母校西安電子科技大學進行,迄今已是第三屆,頗具規模。在此歡迎各位小讀者報考母校的網路與資訊安全學院,這裡真的是一個很棒的地方!
本書的出版,要感謝我的大學室友劉晉,他早期的幫助讓這個項目得以成形;感謝騰訊的吳石老師,他的推薦讓本專案順利成書、惠及更多的人;感謝吳石老師和騰訊eee 戰隊的謝天憶、朱夢凡、馬會心和劉耕銘四位老師的建議與審校,讓本書的內容更上一層樓;感謝學弟槐和koocola,貢獻了本書第11 章的初稿;感謝湖北警官學院的談楚瑜和MXYLR,以及其他來自GitHub 的朋友的鼓勵和支持;感謝電子工業出版社的劉皎老師,她認真細緻的工作使本書得以高品質地呈現給讀者;感謝我的父母給了我選擇和發展的自由,讓我在人生道路上沒有後顧之憂;感謝那位不願透露姓名的朋友,遇見你曾是青春最美好的事!感謝你們!
楊超