奪旗賽 (Capture The Flag, CTF) 與現實的滲透測試 (Penetration Test) 有著很大的差異。雖然奪旗賽的考題與網路空間安全 (CyberSecurity) 有相當的關聯,但奪旗賽的考題具有不真實性,出題者大多會利用特別的技巧將考題變得艱難一些,所以其考題比較狡猾。而且不像現實環境,其所有考題都必能解答 (solved),而且有些的考題更提供解答提示。
在奪旗賽的謎題 (Jeopardy) 類型中比較近似滲透測試的只有網站 (Web) 相關類型、利用 (PWN,Exploitation) 和逆向工程 (Reverse Engineering) 類型,因為這些類型都會用上滲透測試的技術和知識。其他的類型考題與滲透測試幾乎沒有直接的相關,只有與資訊科技技術相關;所以奪旗賽其實是一場遊戲吧了。
有些人總會認為奪旗賽高手是滲透測試或網路空間安全高手,我不敢苟同。我個人認為奪旗賽高手未必是一個滲透測試或網路空間安全高手。正如網游軍事射擊高手未必是現實環境中的神射手或軍事專家一樣吧!
滲透測試人員或網路空間安全人員閑來玩玩奪旗賽來調劑一下生活是未嘗不可的!
參與奪旗賽需要有基本的電算機和網路知識,尤以對 Kali Linux 等作業系統有一定程度的認識。
奪旗賽最基本的考題類型是謎題 (Jeopardy) 類型。它大致包括網站相關 (Web) 類型、逆向工程 (Reverse Engineering)、利用 (PWN,Exploitation)、編解碼 (Cryptography)、安卓 (APK)、隱寫 (Steganography)、法理取證 (Forensics) 等類型。
以下總結這些考題類型的所需主要基本技術知識要求和滲透測試相關的知識(若果適用的話)。
## 網站相關 (Web) 類型
### 主要基本技術知識要求 :
– PHP 語言 (PHP scripting)
– Python 語言 (Python scripting)
– HTML / CSS 語言 (HTML / CSS)
– 爪哇腳本代碼 (JavaScript)
– MySQL 資料庫 (MySQL Database)
– 源碼審計 (Source Code Analysis)
### 基本工具可供利用 :
– Burp Suite
– NMap
– goBuster
### 涉獵滲透測試相關知識 :
– OWASP Top 10
## 逆向工程 (Reverse Engineering) / 利用 (PWN,Exploitation) 類型
### 主要基本技術知識要求 :
– x86 / x64 組合語言 (Assembly Language)
– C 語言 (C Language)
– Python 語言 (Python Scripting)
– 後門,殼 (Shell)
### 基本工具可供利用 :
– GDB
– IDA
### 涉獵滲透測試相關知識 :
– 棧溢出 (Buffer Overflow)
– 堆溢出 (Heap Overflow)
– 格式化字串 (Format String)
– 競爭條件 (Race Condition)
## 編解碼 (Cryptography) 類型
### 主要基本技術知識要求 :
– Hex 編碼 (Hex Encode)
– 網址編碼 (URL Encode)
– 摩斯電碼 (Morse Code)
– 爪哇腳本代碼 (JavaScript – jsfuck)
– 二進位轉化 (uuencode)
– Base 家族 (base64, base32, base16)
– 古典密碼學
– 現代密碼學
## 安卓 (APK) 類型
### 主要基本技術知識要求 :
– ARM 架構基礎知識
– Android 基本架構知識
– 爪哇語言 (Java Language)
### 基本工具可供利用 :
– APK 反編譯工具
– GDB
– IDA
## 隱寫 (Steganography)
### 主要基本技術知識要求 :
– 檔案格式架構基礎知識
## 法理取證 (Forensics)
### 主要基本技術知識要求 :
– 資料包分析 (Packet Analysis)
– 記憶體傾印分析 (Memory Dump Analysis)
因為奪旗賽的基本門檻是非常高,所以大多數玩家都只能涉獵一至兩個考題類型,如果能夠涉獵所有類型考題的玩家是極其少數。奪旗賽玩家需要腦洞大開,因為幾乎所有設計優質的考題只有一個解答方法,即是只有一個思路!
雖然是一場遊戲,但是參與者都要全力以赴,Work Hard!Play Hard!
Hack The Planet!
Samiux
OSCE OSCP OSWP
二零二一年四月廿五日,中國香港
來源(簡體中文版本) :https://samiux.github.io/ctf_noob.html