CTF 競賽權威指南 (Pwn篇)

楊超

  • 出版商: 電子工業
  • 出版日期: 2020-12-01
  • 定價: $834
  • 售價: 8.5$709
  • 語言: 簡體中文
  • 頁數: 726
  • ISBN: 7121399520
  • ISBN-13: 9787121399527
  • 立即出貨

買這商品的人也買了...

相關主題

商品描述

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

目錄大綱

第1章CTF簡介 1.1賽事介紹 1.1.1賽事起源 1.1.2競賽模式 1.1.3競賽內容 1.2知名賽事及會議 1.2.1網絡安全競賽 1.2.2網絡安全會議 1.2.3網絡安全學術會議 1.3學習經驗 1.3.1二進制安全入門 1.3.2CTF經驗8 1.3.3對安全從業者的建議8 第2章二進制文件 2.1從源代碼到可執行文件11 2.1.1編譯原理11 2.1.2GCC編譯過程12 2.1.3預處理階段13 2.1.4編譯階段14 2.1.5匯編階段15 2.1.6鏈接階段15 2.2ELF文件格式16 2.2.1ELF文件的類型16 2.2.2ELF文件的結構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 第3章匯編基礎 3.1CPU架構與指令集34 3.1.1指令集架構34 3.1.2CISC與RISC對比35 3.2x86/x64匯編基礎36 3.2.1CPU操作模式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 第4章Linux安全機制 4.1Linux基礎45 4.1.1常用命令45 4.1.2流、管道和重定向46 4.1.3根目錄結構47 4.1.4用戶組及文件權限47 4.1.5環境變量49 4.1.6procfs文件系統51 4.1.7字節序52 4.1.8調用約定53 4.1.9核心轉儲54 4.1.10系統調用55 4.2StackCanaries58 4.2.1簡介58 4.2.2實現61 4.2.3NJCTF2017:messager63 4.2.4sixstarsCTF2018:babystack65 4.3No-eXecute69 4.3.1簡介69 4.3.2實現70 4.3.3示例73 4.4ASLR和PIE75 4.4.1ASLR75 4.4.2PIE76 4.4.3實現77 4.4.4示例79 4.5FORTIFY_SOURCE83 4.5.1簡介83 4.5.2實現84 4.5.3示例86 4.5.4安全性89 4.6RELRO90 4.6.1簡介90 4.6.2示例90 4.6.3實現93 第5章分析環境搭建 5.1虛擬機環境96 5.1.1虛擬化與虛擬機管理程序96 5.1.2安裝虛擬機97 5.1.3編譯debug版本的glibc98 5.2Docker環境100 5.2.1容器與Docker100 5.2.2Docker安裝及使用101 5.2.3Pwn題目部署102 第6章分析工具 6.1IDAPro104 6.1.1簡介104 6.1.2基本操作105 6.1.3遠程調試108 6.1.4IDAPython110 6.1.5常用插件114 6.2Radare2115 6.2.1簡介及安裝115 6.2.2框架組成及交互方式115 6.2.3命令行工具118 6.2.4r2命令122 6.3GDB125 6.3.1組成架構125 6.3.2工作原理125 6.3.3基本操作127 6.3.4增強工具130 6.4其他常用工具132 6.4.1dd133 6.4.2file133 6.4.3ldd134 6.4.4objdump134 6.4.5readelf135 6.4.6socat136 6.4.7strace<race136 6.4.8strip137 6.4.9strings138 6.4.10xxd138 第7章漏洞利用開發 7.1shellcode開發141 7.1.1shellcode的基本原理141 7.1.2編寫簡單的shellcode141 7.1.3shellcode變形143 7.2Pwntools145 7.2.1簡介及安裝145 7.2.2常用模塊和函數145 7.3zio152 7.3.1簡介及安裝152 7.3.2使用方法153 第8章整數安全 8.1電腦中的整數156 8.2整數安全漏洞157 8.2.1整數溢出157 8.2.2漏洞多發函數158 8.2.3整數溢出示例159 第9章格式化字符串 9.1格式化輸出函數162 9.1.1變參函數162 9.1.2格式轉換162 9.2格式化字符串漏洞164 9.2.1基本原理164 9.2.2漏洞利用166 9.2.3fmtstr模塊174 9.2.4HITCONCMT2017:pwn200176 9.2.5NJCTF2017:pingme178 第10章棧溢出與ROP 10.1棧溢出原理183 10.1.1函數調用棧183 10.1.2危險函數186 10.1.3ret2libc186 10.2返回導向編程187 10.2.1ROP簡介187 10.2.2ROP的變種189 10.2.3示例191 10.3BlindROP192 10.3.1BROP原理192 10.3.2HCTF2016:brop193 10.4SROP200 10.4.1SROP原理200 10.4.2pwntoolssrop模塊204 10.4.3BackdoorCTF2017:FunSignals204 10.5stackpivoting206 10.5.1stackpivoting原理206 10.5.2GreHackCTF2017:beerfighter209 10.6ret2dl-resolve213 10.6.1ret2dl-resolve原理213 10.6.2XDCTF2015:pwn200217 第11章堆利用 11.1glibc堆概述224 11.1.1內存管理與堆224 11.1.2重要概念和結構體226 11.1.3各類bin介紹229 11.1.4chunk相關源碼231 11.1.5bin相關源碼235 11.1.6malloc_consolidate()函數237 11.1.7malloc()相關源碼239 11.1.8free()相關源碼248 11.2TCache機制251 11.2.1數據結構251 11.2.2使用方法252 11.2.3安全性分析255 11.2.4HITBCTF2018:gundam257 11.2.5BCTF2018:HouseofAtum263 11.3fastbin二次釋放268 11.3.1fastbindup268 11.3.2fastbindupconsolidate273 11.3.30CTF2017:babyheap275 11.4houseofspirit283 11.4.1示例程序284 11.4.2LCTF2016:pwn200287 11.5不安全的unlink291 11.5.1unsafeunlink292 11.5.2HITCONCTF2016:SecretHolder295 11.5.3HITCONCTF2016:SleepyHolder303 11.6off-by-one307 11.6.1off-by-one307 11.6.2poisonnullbyte310 11.6.3ASISCTF2016:b00ks313 11.6.4PlaidCTF2015:PlaidDB320 11.7houseofeinherjar325 11.7.1示例程序325 11.7.2SECCONCTF2016:tinypad328 11.8overlappingchunks336 11.8.1擴展被釋放塊336 11.8.2擴展已分配塊339 11.8.3hack.luCTF2015:bookstore342 11.8.40CTF2018:babyheap349 11.9houseofforce353 11.9.1示例程序353 11.9.2BCTF2016:bcloud356 11.10unsortedbin與largebin攻擊363 11.10.1unsortedbinintostack363 11.10.2unsortedbinattack367 11.10.3largebin攻擊370 11.10.40CTF2018:heapstorm2374 第12章Pwn技巧 12.1one-gadget383 12.1.1尋找one-gadget383 12.1.2ASISCTFQuals2017:Starthard385 12.2通用gadget及Return-to-csu388 12.2.1Linux程序的啟動過程388 12.2.2Return-to-csu390 12.2.3LCTF2016:pwn100392 12.3劫持hook函數395 12.3.1內存分配hook396 12.3.20CTF2017-babyheap397 12.4利用DynELF泄露函數地址401 12.4.1DynELF模塊401 12.4.2DynELF原理402 12.4.3XDCTF2015:pwn200403 12.4.4其他泄露函數406 12.5SSPLeak409 12.5.1SSP409 12.5.2__stack_chk_fail()411 12.5.332C3CTF2015:readme412 12.5.434C3CTF2017:readme_revenge416 12.6利用environ泄露棧地址422 12.7利用_IO_FILE結構429 12.7.1FILE結構體429 12.7.2FSOP431 12.7.3FSOP(libc-2.24版本)433 12.7.4HITCONCTF2016:HouseofOrange438 12.7.5HCTF2017:babyprintf445 12.8利用vsyscall449 12.8.1vsyscall和vDSO449 12.8.2HITBCTF2017:1000levels451