關(guān)于我們
書單推薦
新書推薦
|
從0到1:CTFer成長(zhǎng)之路 讀者對(duì)象:網(wǎng)絡(luò)空間安全、信息安全的高校學(xué)生,CTF比賽的參賽人員,網(wǎng)絡(luò)空間安全、信息安全的從業(yè)人員
本書主要面向CTF入門者,融入了CTF比賽的方方面面,讓讀者可以進(jìn)行系統(tǒng)性的學(xué)習(xí)。本書包括13章的內(nèi)容,技術(shù)介紹分為線上賽和線下賽兩部分。線上賽包括10章,涵蓋Web、PWN、Reverse、APK、Misc、Crypto、區(qū)塊鏈、代碼審計(jì)。線下賽包括2章,分別為AWD和靶場(chǎng)滲透。第13章通過Nu1L戰(zhàn)隊(duì)成員的故事和聯(lián)合戰(zhàn)隊(duì)管理等內(nèi)容來分享CTF戰(zhàn)隊(duì)組建和管理、運(yùn)營(yíng)的經(jīng)驗(yàn)。
Nu1L戰(zhàn)隊(duì)成員來自于上?萍即髮W(xué)、西華大學(xué)、成都信息工程大學(xué)、北京理工大學(xué)等全國(guó)多所高校,最早是由兩個(gè)研究Web的同學(xué)創(chuàng)建,隊(duì)名源于計(jì)算機(jī)中語言中經(jīng)常出現(xiàn)的"NULL”。
目 錄
CTF之線上賽 第1章 Web入門 3 1.1 舉足輕重的信息收集 3 1.1.1 信息搜集的重要性 3 1.1.2 信息搜集的分類 3 1.1.2.1 敏感目錄泄露 4 1.1.2.2 敏感備份文件 7 1.1.2.3 Banner識(shí)別 9 1.1.3 從信息搜集到題目解決 9 1.2 CTF中的SQL注入 12 1.2.1 SQL注入基礎(chǔ) 12 1.2.1.1 數(shù)字型注入和UNION注入 12 1.2.1.2 字符型注入和布爾盲注 17 1.2.1.3 報(bào)錯(cuò)注入 22 1.2.2 注入點(diǎn) 24 1.2.2.1 SELECT注入 24 1.2.2.2 INSERT注入 26 1.2.2.3 UPDATE注入 27 1.2.2.4 DELETE注入 28 1.2.3 注入和防御 29 1.2.3.1 字符替換 29 1.2.3.2 逃逸引號(hào) 31 1.2.4 注入的功效 33 1.2.5 SQL注入小結(jié) 34 1.3 任意文件讀取漏洞 34 1.3.1 文件讀取漏洞常見觸發(fā)點(diǎn) 35 1.3.1.1 Web語言 35 1.4.1.2 中間件/服務(wù)器相關(guān) 37 1.4.1.3 客戶端相關(guān) 39 1.3.2 文件讀取漏洞常見讀取路徑 39 1.3.2.1 Linux 39 1.3.2.2 Windows 41 1.3.3 文件讀取漏洞例題 41 1.3.3.1 兵者多詭(HCTF 2016) 42 1.3.3.2 PWNHUB - Classroom 43 1.3.3.3 Show me the shell I(TCTF/0CTF 2018 FINAL) 45 1.3.3.4 BabyIntranet I(SCTF 2018) 47 1.3.3.5 SimpleVN(BCTF2018) 48 1.3.3.6 Translate(Google CTF 2018) 50 1.3.3.7 看番就能拿Flag(PWNHUB) 51 1.3.3.8 2013那年(PWNhub) 52 1.3.3.9 Comment(網(wǎng)鼎杯2018線上賽) 57 1.3.3.10 方舟計(jì)劃(CISCN 2017) 58 1.3.3.11 PrintMD(RealWorldCTF 2018線上賽) 60 1.3.3.12 粗心的佳佳(PWNHUB) 62 1.3.3.13 教育機(jī)構(gòu)(強(qiáng)網(wǎng)杯2018線上賽) 64 1.3.3.14 Magic Tunnel(RealworldCTF 2018線下賽) 65 1.3.3.15 Can you find me?(WHUCTF2019,武漢大學(xué)校賽) 67 小結(jié) 68 第2章 Web進(jìn)階 69 2.1 SSRF漏洞 69 2.1.1 SSRF的原理解析 69 2.1.2 SSRF漏洞的尋找和測(cè)試 71 2.1.3 SSRF漏洞攻擊方式 72 2.1.3.1 內(nèi)部服務(wù)資產(chǎn)探測(cè) 72 2.1.3.2 使用Gopher協(xié)議擴(kuò)展攻擊面 72 2.1.3.3 自動(dòng)組裝Gopher 80 2.1.4 SSRF的繞過 80 2.1.4.1 IP的限制 80 2.1.4.2 302跳轉(zhuǎn) 82 2.1.4.3 URL的解析問題 83 2.1.4.4 DNS Rebinding 86 2.1.5 CTF中的SSRF 88 2.2 命令執(zhí)行漏洞 92 2.2.1 命令執(zhí)行的原理和測(cè)試方法 92 2.2.1.1 命令執(zhí)行原理 93 2.2.1.2 命令執(zhí)行基礎(chǔ) 93 2.2.1.3 命令執(zhí)行的基本測(cè)試 95 2.2.2 命令執(zhí)行的繞過和技巧 95 2.2.2.1 缺少空格 95 2.2.2.2 黑名單關(guān)鍵字 97 2.2.2.3 執(zhí)行無回顯 98 2.2.3 命令執(zhí)行真題講解 100 2.2.3.1 2015 HITCON Babyfirst 100 2.2.3.2 2017 HITCON BabyFirst Revenge 101 2.2.3.3 2017 HITCON BabyFirst Revenge v2 103 2.3 XSS的魔力 104 2.3.1 XSS漏洞類型 104 2.3.2 XSS的tricks 108 2.3.3 XSS過濾和繞過 111 2.3.4 XSS繞過案例 117 2.4 Web文件上傳漏洞 121 2.4.1 基礎(chǔ)文件上傳漏洞 121 2.4.2 截?cái)嗬@過上傳限制 122 2.4.2.1 00截?cái)?122 2.4.2.2 轉(zhuǎn)換字符集造成的截?cái)?125 2.4.3 文件后綴黑名單校驗(yàn)繞過 126 2.4.3.1 上傳文件重命名 126 2.4.3.2 上傳文件不重命名 127 2.4.4 文件后綴白名單校驗(yàn)繞過 130 2.4.4.1 Web服務(wù)器解析漏洞 130 2.4.4.2 APACHE解析漏洞 131 2.4.5 文件禁止訪問繞過 132 2.4.5.1 .htaccess禁止腳本文件執(zhí)行繞過 133 2.4.5.2 文件上傳到OSS 134 2.4.5.3 配合文件包含繞過 134 2.4.5.4 一些可被繞過的Web配置 135 2.4.6 繞過圖片驗(yàn)證實(shí)現(xiàn)代碼執(zhí)行 137 2.4.7 上傳生成的臨時(shí)文件利用 140 2.4.8 使用file_put_contents實(shí)現(xiàn)文件上傳 142 2.4.9 ZIP上傳帶來的上傳問題 147 小結(jié) 156 第3章 Web拓展 157 3.1 反序列化漏洞 157 3.1.1 PHP反序列化 157 3.1.1.1 常見反序列化 158 3.1.1.2 原生類利用 160 3.1.1.3 Phar反序列化 163 3.1.1.4 小技巧 165 3.1.2 經(jīng)典案例分析 170 3.2 Python的安全問題 172 3.2.1 沙箱逃逸 172 3.2.1.1 關(guān)鍵詞過濾 172 3.2.1.2 花樣import 173 3.2.1.3 使用繼承等尋找對(duì)象 174 3.2.1.4 eval類的代碼執(zhí)行 174 3.2.2 格式化字符串 175 3.2.2.1 最原始的% 175 3.2.2.2 format方法相關(guān) 175 3.2.2.3 Python 3.6中的f字符串 176 3.2.3 Python模板注入 176 3.2.4 urllib和SSRF 177 3.2.4.1 CVE-2016-5699 177 3.2.4.2 CVE-2019-9740 178 3.2.5 Python反序列化 179 3.2.6 Python XXE 180 3.2.7 sys.audit 182 3.2.8 CTF Python案例 182 3.2.8.1 皇家線上賭場(chǎng)(SWPU 2018) 182 3.2.8.2 mmmmy(2018網(wǎng)鼎杯) 183 3.3 密碼學(xué)和逆向知識(shí) 185 3.3.1 密碼學(xué)知識(shí) 186 3.3.1.1 分組加密 186 3.3.1.2 加密方式的識(shí)別 186 3.3.1.3 ECB模式 186 3.3.1.4 CBC模式 188 3.3.1.5 Padding Oracle Attack 191 3.3.1.6 Hash Length Extension 197 3.3.1.7 偽隨機(jī)數(shù) 200 3.3.1.8 密碼學(xué)小結(jié) 202 3.3.2 Web中的逆向工程 202 3.3.2.1 Python 202 3.3.2.2 PHP 203 3.3.2.3 JavaScript 206 3.4 邏輯漏洞 207 3.4.1 常見的邏輯漏洞 207 3.4.2 CTF中的邏輯漏洞 211 3.4.3 邏輯漏洞小結(jié) 212 小結(jié) 212 第4章 APK 213 4.1 Android開發(fā)基礎(chǔ) 213 4.1.1 Android四大組件 213 4.1.2 APK文件結(jié)構(gòu) 214 4.1.3 DEX文件格式 214 4.1.4 Android API 215 4.1.5 Android示例代碼 216 4.2 APK逆向工具 217 4.2.1 JEB 217 4.2.2 IDA 219 4.2.3 Xposed Hook 220 4.2.4 Frida Hook 222 4.3 APK逆向之反調(diào)試 224 4.4 APK逆向之脫殼 224 4.4.1 注入進(jìn)程Dump內(nèi)存 224 4.4.2 修改源碼脫殼 225 4.4.3 類重載和DEX重組 227 4.5 APK真題解析 227 4.5.1 Ollvm混淆Native App逆向(NJCTF 2017) 227 4.5.2 反調(diào)試及虛擬機(jī)檢測(cè)(XDCTF 2016) 230 小結(jié) 232 第5章 逆向工程 233 5.1 逆向工程基礎(chǔ) 233 5.1.1 逆向工程概述 233 5.1.2 可執(zhí)行文件 233 5.1.3 匯編語言基本知識(shí) 234 5.1.4 常用工具介紹 239 5.2 靜態(tài)分析 243 5.2.1 IDA使用入門 243 5.2.2 HexRays反編譯器入門 249 5.2.3 IDA和HexRays進(jìn)階 254 5.3 動(dòng)態(tài)調(diào)試和分析 258 5.3.1 調(diào)試的基本原理 258 5.3.2 OllyDBG和x64DBG調(diào)試 258 5.3.3 GDB調(diào)試 264 5.3.4 IDA調(diào)試器 265 5.4 常見算法識(shí)別 273 5.4.1 特征值識(shí)別 273 5.4.2 特征運(yùn)算識(shí)別 274 5.4.3 第三方庫識(shí)別 274 5.5 二進(jìn)制代碼保護(hù)和混淆 276 5.5.1 抵御靜態(tài)分析 277 5.5.2 加密 280 5.5.3 反調(diào)試 289 5.5.4 淺談ollvm 296 5.6 高級(jí)語言逆向 297 5.6.1 Rust和Go 298 5.6.2 C#和Python 301 5.6.3 C++ MFC 302 5.7 現(xiàn)代逆向工程技巧 303 5.7.1 符號(hào)執(zhí)行 303 5.7.1.1 符號(hào)執(zhí)行概述 303 5.7.1.2 angr 304 5.7.1.3 angr小結(jié) 313 5.7.2 二進(jìn)制插樁 313 5.7.3 Pin 314 5.7.3.1 環(huán)境配置 314 5.7.3.2 Pintool使用 317 5.7.3.3 Pintool基本框架 317 5.7.3.4 CTF實(shí)戰(zhàn):記錄執(zhí)行指令數(shù) 319 5.7.3.5 CTF實(shí)戰(zhàn):記錄指令軌跡 322 5.7.3.6 CTF實(shí)戰(zhàn):記錄指令執(zhí)行信息與修改內(nèi)存 325 5.7.3.7 Pin小結(jié) 330 5.8 逆向中的技巧 331 5.8.1 Hook 331 5.8.2 巧妙利用程序已有代碼 331 5.8.3 Dump內(nèi)存 332 小結(jié) 333 第6章 PWN 335 6.1 PWN基礎(chǔ) 335 6.1.1 什么是PWN 335 6.1.2 如何學(xué)習(xí)PWN 335 6.1.3 Linux基礎(chǔ)知識(shí) 336 6.1.3.1 Linux中的系統(tǒng)與函數(shù)調(diào)用 336 6.1.3.2 ELF文件結(jié)構(gòu) 337 6.1.3.3 Linux下的漏洞緩解措施 338 6.1.3.4 GOT和PLT的作用 339 6.2 整數(shù)溢出 340 6.2.1 整數(shù)的運(yùn)算 340 6.2.2 整數(shù)溢出如何利用 341 6.3 棧溢出 341 6.4 返回導(dǎo)向編程 346 6.5 格式化字符串漏洞 350 6.5.1 格式化字符串漏洞基本原理 350 6.5.2 格式化字符串漏洞基本利用方式 352 6.5.3 格式化字符串不在棧上的利用方式 354 6.5.4 格式化字符串的一些特殊用法 357 6.5.5 格式化字符串小結(jié) 358 6.6 堆利用 358 6.6.1 什么是堆 358 6.6.2 簡(jiǎn)單的堆溢出 359 6.6.3 堆內(nèi)存破壞漏洞利用 360 6.6.3.1 Glibc調(diào)試環(huán)境搭建 360 6.3.6.2 Fast Bin Attack 361 6.6.3.3 Unsorted Bin List 367 6.6.3.4 Unlink攻擊 371 6.6.3.5 Large Bin Attack(0CTF heapstormII) 375 6.6.3.6 Make Life Easier:tcache 379 6.6.3.7 Glibc 2.29的tcache 380 6.7 Linux內(nèi)核PWN 381 6.7.1 運(yùn)行一個(gè)內(nèi)核 381 6.7.2 網(wǎng)絡(luò)配置 381 6.7.3 文件系統(tǒng) 382 6.7.4 初始化腳本 382 6.7.5 內(nèi)核調(diào)試 383 6.7.6 分析程序 383 6.7.7 漏洞利用 384 6.7.8 PWN Linux小結(jié) 387 6.7.9 Linux內(nèi)核PWN源代碼 387 6.8 Windows系統(tǒng)的PWN 389 6.8.1 Windows的權(quán)限管理 390 6.8.2 Windows的調(diào)用約定 390 6.8.3 Windows的漏洞緩解機(jī)制 391 6.8.4 Windows的PWN技巧 393 6.9 Windows內(nèi)核PWN 394 6.9.1 關(guān)于Windows操作系統(tǒng) 394 6.9.1.1 80386和保護(hù)模式 394 6.9.1.2 Windows操作系統(tǒng)尋址 395 6.9.1.3 Windows操作系統(tǒng)架構(gòu) 403 6.9.1.4 Windows內(nèi)核調(diào)試環(huán)境 404 6.9.2 Windows內(nèi)核漏洞 407 6.9.2.1 簡(jiǎn)單的Windows驅(qū)動(dòng)開發(fā)入門 408 6.9.2.2 編寫棧溢出示例 411 6.9.2.3 編寫任意地址寫示例 413 6.9.2.4 加載內(nèi)核驅(qū)動(dòng)程序 414 6.9.2.5 Windows 7內(nèi)核漏洞利用 416 6.9.2.6 內(nèi)核緩解措施與讀寫原語 426 6.9.3 參考與引用 431 6.10 從CTF到現(xiàn)實(shí)世界的PWN 431 小結(jié) 433 第7章 Crypto 435 7.1 編碼 435 7.1.1 編碼的概念 435 7.1.2 Base編碼 436 7.1.3 其他編碼 437 7.1.4 編碼小結(jié) 438 7.2 古典密碼 438 7.2.1 線性映射 438 7.2.2 固定替換 439 7.2.3 移位密碼 440 7.2.4 古典密碼小結(jié) 440 7.3 分組密碼 441 7.3.1 分組密碼常見工作模式 441 7.3.1.1 ECB 441 7.3.1.2 CBC 441 7.3.1.3 OFB 442 7.3.1.4 CFB 443 7.3.1.5 CTR 443 7.3.2 費(fèi)斯妥密碼和DES 444 7.3.2.1 費(fèi)斯妥密碼 444 7.3.2.2 DES 445 7.3.2.3 例題 447 7.3.3 AES 449 7.3.3.1 有限域 449 7.3.3.2 Rijndael密鑰生成 451 7.3.3.3 AES步驟 452 7.3.3.4 常見攻擊 453 7.4 流密碼 457 7.4.1 線性同余生成器(LCG) 457 7.4.1.1 由已知序列破譯LCG 458 7.4.1.2 攻破Linux Glibc的rand()函數(shù)-1 460 7.4.2 線性反饋移位寄存器(LFSR) 460 7.4.2.1 由已知序列破譯LFSR 461 7.4.2.2 攻破Linux glibc的rand()函數(shù)-2 461 7.4.3 RC4 463 7.5 公鑰密碼 464 7.5.1 公鑰密碼簡(jiǎn)介 464 7.5.2 RSA 464 7.5.2.1 RSA簡(jiǎn)介 464 7.5.2.2 RSA的常見攻擊 465 7.5.3 離散對(duì)數(shù)相關(guān)密碼學(xué) 470 7.5.3.1 ElGamal和ECC 470 7.5.3.2 離散對(duì)數(shù)的計(jì)算 470 7.6 其他常見密碼學(xué)應(yīng)用 472 7.6.1 Diffie-Hellman密鑰交換 472 7.6.2 Hash長(zhǎng)度擴(kuò)展攻擊 473 7.6.3 Shamir門限方案 474 小結(jié) 475 第8章 智能合約 476 8.1 智能合約概述 476 8.1.1 智能合約介紹 476 8.1.2 環(huán)境和工具 476 8.2 以太坊智能合約題目實(shí)例 477 8.2.1 “薅羊毛” 477 8.2.2 Remix的使用 482 8.2.3 深入理解以太坊區(qū)塊鏈 484 小結(jié) 488 第9章 Misc 489 9.1 隱寫術(shù) 490 9.1.1 直接附加 490 9.1.2 EXIF 492 9.1.3 LSB 494 9.1.4 盲水印 497 9.1.5 隱寫術(shù)小結(jié) 498 9.2 壓縮包加密 498 9.3 取證技術(shù) 499 9.3.1 流量分析 500 9.3.1.1 Wireshark和Tshark 500 9.3.1.2 流量分析常見操作 501 9.3.1.3 特殊種類的流量包分析 504 9.3.1.4 流量包分析小結(jié) 505 9.3.2 內(nèi)存鏡像取證 505 9.3.2.1 內(nèi)存取證介紹 505 9.3.2.2 內(nèi)存取證常見操作 505 9.3.2.3 內(nèi)存取證小結(jié) 507 9.3.3 磁盤鏡像取證 507 9.3.3.1 磁盤鏡像介紹 507 9.3.3.2 磁盤取證常見操作 507 9.3.3.3 磁盤取證小結(jié) 509 小結(jié) 509 第10章 代碼審計(jì) 510 10.1 PHP代碼審計(jì) 510 10.1.1 環(huán)境搭建 510 10.1.2 審計(jì)流程 517 10.1.3 案例 527 10.2 Java代碼審計(jì) 536 10.2.1 學(xué)習(xí)經(jīng)驗(yàn) 536 10.2.2 環(huán)境搭建 538 10.2.3 反編譯工具 540 10.2.4 Servlet簡(jiǎn)介 541 10.2.5 Serializable簡(jiǎn)介 542 10.2.6 反序列化漏洞 545 10.2.6.1 漏洞概述 545 10.2.6.2 漏洞利用形式 546 10.2.7 表達(dá)式注入 552 10.2.7.1 表達(dá)式注入概述 552 10.2.7.2 表達(dá)式注入漏洞特征 552 10.2.7.3 表達(dá)式結(jié)構(gòu)概述 553 10.2.7.5 S2-045簡(jiǎn)要分析 555 10.2.7.6 表達(dá)式注入小結(jié) 558 10.2.8 Java Web漏洞利用方式 558 10.2.8.1 JNDI注入 558 10.2.8.2 反序列化利用工具ysoserial/marshalsec 563 10.2.8.3 Java Web漏洞利用方式小結(jié) 566 小結(jié) 566 CTF之線下賽 第11章 AWD 571 11.1 比賽前期準(zhǔn)備 571 11.2 比賽技巧 573 11.2.1 如何快速反應(yīng) 573 11.2.2 如何優(yōu)雅、持續(xù)地拿flag 574 11.2.3 優(yōu)勢(shì)和劣勢(shì) 577 11.3 流量分析 578 11.4 漏洞修復(fù) 578 小結(jié) 579 第12章 靶場(chǎng)滲透 580 12.1 打造滲透環(huán)境 580 12.1.1 Linux下Metasploit的安裝和使用 580 12.1.2 Linux下Nmap的安裝和使用 584 12.1.3 Linux下Proxychains的安裝和使用 586 12.1.4 Linux下Hydra的安裝和使用 587 12.1.5 Windows下PentestBox的安裝 588 12.1.6 Windows下Proxifier的安裝 588 12.2 端口轉(zhuǎn)發(fā)和代理 589 12.2.1 端口轉(zhuǎn)發(fā) 592 12.2.2 Socks代理 597 12.3 常見漏洞利用方式 598 12.3.1 ms08-067 598 12.3.2 ms14-068 599 12.3.3 ms17-010 600 12.4 獲取認(rèn)證憑證 601 12.4.1 獲取明文身份憑證 602 12.4.1.1 LSA Secrets 602 12.4.1.2 LSASS Process 604 12.4.1.3 LSASS Protection bypass 605 12.4.1.4 Credential Manager 606 12.4.1.5 在用戶文件中尋找身份憑證Lazange 607 12.4.2 獲取Hash身份憑證 607 12.4.2.1 通過SAM數(shù)據(jù)庫獲取本地用戶Hash憑證 607 12.4.2.2 通過域控制器的NTDS.dit文件 609 12.5 橫向移動(dòng) 611 12.5.1 Hash傳遞 611 12.5.2 票據(jù)傳遞 613 12.5.2.1 Kerberos認(rèn)證 613 12.5.2.2 金票據(jù) 614 12.5.2.3 銀票據(jù) 615 12.6 靶場(chǎng)滲透案例 618 12.6.1 第13屆CUIT校賽滲透題目 618 12.6.2 Defcon China靶場(chǎng)題 625 12.6.3 PWNHUB深入敵后 632 小結(jié) 636 CTF之團(tuán)隊(duì)建設(shè) 第13章 我們的戰(zhàn)隊(duì) 641 13.1 無中生有,有生無窮 641 13.2 上下而求索 642 13.3 多面發(fā)展的Nu1L戰(zhàn)隊(duì) 643 13.3.1 承辦比賽 643 13.3.2 空指針社區(qū) 643 13.3.3 安全會(huì)議演講 644 13.4 人生的選擇 644 13.5 戰(zhàn)隊(duì)隊(duì)長(zhǎng)的話 646 小結(jié) 647
你還可能感興趣
我要評(píng)論
|