[資安入門] 005 CTF 入門指南:新手如何入門 CTF?完整指南與資源推薦

以下是一篇給 CTF 新手的入門指南,內容涵蓋 CTF 的基本概念、各題型介紹、學習與練習的方法,以及一些台灣/國際資源分享。希望能幫助想踏入 CTF 世界的新手,快速了解該如何開始。

1. 什麼是 CTF?

CTF(Capture The Flag)是一種資訊安全競賽的形式,通常將挑戰題目分為數種主要類型,例如:

  • Pwn (Binary Exploitation):破解或攻擊程式,利用其弱點(漏洞)取得目標機器或執行未被預期的動作。
  • Reverse (Reverse Engineering):逆向工程,分析程式碼或檔案運作方式,找出演算法邏輯或破解方法。
  • Web (Web Exploitation):針對網站常見漏洞(SQL Injection、XSS、File Inclusion 等)進行滲透測試和漏洞利用。
  • Forensics (數位鑑識):分析系統、記憶體或封包,透過蛛絲馬跡取得 Flag。
  • Crypto (密碼學):解密、分析密碼或加密演算法,甚至自行推導解密方式。
  • Misc (雜項):包含 OSINT、編碼轉換、隱寫術(Steganography)等比較零散的主題。

不同 CTF 會根據賽制與性質分配不同的題目類型,也有部分競賽主打特定範圍(如純 Web 或純逆向)。

CTF 比賽類型分類

1. Jeopardy(解題型)

這是最常見的 CTF 賽制,參賽者需要從多種題目中選擇解題,目標是找到題目隱藏的 Flag,根據題目難度獲得相應分數。

  • 特點
    • 題目多樣,涵蓋 Pwn、Reverse、Web、Crypto、Forensics 等領域。
    • 參賽者可以自由選擇擅長的題型解題,分數通常累積到比賽結束。
  • 適合對象:初學者與進階玩家都可參加,對個人與小型團隊特別友善。
  • 範例比賽:picoCTF、Google CTF(Quals 賽)、AIS3 Pre-exam。

2. Attack-Defense(攻防型)

攻防型 CTF 更注重實戰,模擬真實的網路攻防情境。參賽團隊需在指定的基礎環境中,攻擊對手的伺服器同時保護自己的服務。

  • 特點
    • 團隊需要同時具備進攻(滲透測試、漏洞利用)與防禦(漏洞修補、日誌分析)能力。
    • 賽事進行中,團隊需快速回應對手攻擊,同時在規定時間內得分。
  • 適合對象:進階玩家、團隊合作能力強的參賽者。
  • 範例比賽:DEF CON CTF(決賽)、HITCON CTF(部分賽制)。

3. King of the Hill(KoTH)

KoTH 是一種特殊的 CTF 比賽類型,參賽者需要攻陷目標系統(通常是一台虛擬機或服務),並在奪得控制權後進行防禦,防止其他參賽者奪回系統的控制。

  • 特點
    • 比賽期間,參賽者需要攻擊其他參賽者的已控主機,同時鞏固自己對主機的控制權。
    • 參賽者獲得分數的時間取決於他們對目標的控制時間長短。
    • 比賽結束時,控制系統時間最長的隊伍或個人獲勝。
  • 防禦與攻擊並重
    • 除了滲透測試技術,還需具備系統加固、防禦與監控的能力(如修補漏洞、阻止其他攻擊)。
    • 需要快速分析系統漏洞,並在有限時間內設置防禦機制。
  • 適合對象:進階玩家或對攻防兼具技能有興趣的參賽者。

  • 範例比賽:Hack The Box KoTH、TryHackMe KoTH 模式。

CTF 類型的區別

特點 King of the Hill Attack-Defense Jeopardy
目標 奪取並保持控制權 攻擊對手並防禦自己的服務 解決獨立題目以取得 Flag
焦點 同時進行攻擊與防禦 主要專注於服務防禦與攻擊 以解題能力為主
比賽方式 所有參賽者攻擊同一目標並競爭控制權 團隊之間互相攻擊與防禦 各自解決題目,沒有直接對抗
難度 高,需兼顧攻防技術 高,需了解滲透與防禦的完整流程 中至高,視題目難度而定

4. Boot2Root(主機滲透型)

參賽者需要進入一個目標機器(通常為虛擬機),利用滲透測試技術攻入系統,並在最高權限(Root 權限)下找到 Flag。

  • 特點
    • 強調滲透技術和對系統漏洞的理解。
    • 過程涉及資訊搜集、漏洞分析、利用、權限提升等完整流程。
  • 適合對象:喜歡主機滲透測試、想模擬真實環境的玩家。
  • 範例平台:Hack The Box、TryHackMe。

5. Real-World Simulation(真實世界模擬型)

這類比賽聚焦於模擬真實世界的安全事件,例如針對公司內部網路、工控系統(ICS)、雲端服務進行滲透測試或攻防。

  • 特點
    • 題目更貼近企業實際場景,涉及多層網路架構與複雜應用。
    • 強調團隊合作,解決多面向問題。
  • 適合對象:有企業安全背景或希望參與真實場景的進階玩家與團隊。
  • 範例比賽:Cyber Apocalypse CTF、Cyber Defence Exercise(CYBER-X)。

6. AI/自動化型 CTF

部分比賽專注於結合人工智慧(AI)技術與資安競賽,要求參賽者開發自動化工具進行漏洞探索、攻擊或防禦。

  • 特點
    • 高度依賴編程能力和算法設計。
    • 題目通常具有學術或研究性質。
  • 適合對象:熟悉 AI、機器學習或算法研究的參賽者。
  • 範例比賽:DARPA Cyber Grand Challenge。

7. 教育型 CTF(Learning-Based)

這類比賽設計目的是教育與培訓,例如專為新手設計的題目,幫助參賽者逐步學習資安概念與技能。

  • 特點
    • 題目附有提示與教學指引,適合練習基礎技能。
    • 目標是提升參與者的知識與實踐能力,而非競爭性。
  • 適合對象:新手、學生、希望從頭學習的玩家。
  • 範例比賽:picoCTF、OverTheWire、AIS3 Pre-exam。

8. 企業實戰 CTF(Red Team vs. Blue Team)

由企業或資安組織主辦,比賽通常設計為「紅隊 vs 藍隊」模式。參賽者分為攻擊方(紅隊)與防禦方(藍隊),模擬企業內部的攻防場景。

  • 特點
    • 比賽設計高度貼近實際企業安全需求,涵蓋事件響應、威脅檢測等內容。
    • 適合有意進入企業資安工作的參賽者。
  • 適合對象:企業內資安團隊、進階資安工程師。
  • 範例比賽:Cybersecurity Attack & Defense Exercise。

如何選擇適合的比賽類型?

  1. 新手玩家
    • 建議從 Jeopardy 型教育型 CTF 開始,例如 picoCTF、AIS3 Pre-exam、OverTheWire。
  2. 進階玩家或團隊
    • 可挑戰 攻防型 CTF混合型 CTF,如 HITCON CTF、Google CTF。
  3. 實戰導向
    • 若希望模擬真實環境或學習企業場景,選擇 Real-World SimulationBoot2Root 型 比賽。
  4. 學術與研究興趣
    • 對 AI 或演算法有興趣的玩家可參與 AI 相關 CTF

2. 新手該如何開始?

2.1 選擇適合自己的入門平台

對於剛入門 CTF 的玩家而言,建議先從針對新手而設計的教學平台或競賽開始,以下幾個是常見的選擇:

  1. picoCTF
    • 由美國卡內基美隆大學(CMU)舉辦,題目相對友善且適合新手。
    • 每年官方會舉辦一次正式比賽,除此之外以「練習模式」形式保留大部分題目供人免費練習。
  2. OverTheWire
    • 以闖關遊戲的形式教你基礎 Linux 指令操作、基礎 Exploit 技巧等,特別適合對 CLI 不熟悉或想補強 Linux 環境知識的新手。
  3. AIS3 Pre-exam / AIS3 Camp
    • 教育部(台灣資安人才培育計畫)舉辦的資安營隊、課程、比賽等。
    • AIS3 Pre-exam 題目相對入門,適合剛接觸 CTF 的學生和初學者。
  4. CTF 練習網站(如 Hacker101 CTF、Hack The Box 等)
    • 練習強度各有不同,Hacker101 比較偏 Web,Hack The Box 則偏主機滲透(Pwn、系統與服務漏洞)。

2.2 根據「興趣」或「需求」選擇題型

CTF 題型五花八門,建議先挑選自己「有興趣」或「比較容易入門」的領域深入鑽研。例如:

  • 喜歡寫程式、對底層記憶體管理有興趣 → Pwn
  • 對破解邏輯、分析未知機制感興趣 → Reverse
  • 對 Web 開發與網站安全概念熟悉 → Web
  • 喜歡抽絲剝繭的調查、對檔案碎片或網路封包分析有興趣 → Forensics
  • 對密碼學理論或編碼轉換有好奇心 → Crypto

一開始不必全部都學,可以先挑一兩個主題。「有興趣」才會願意投入更多時間摸索。


3. 建置基礎環境與工具

  1. 作業系統與基礎指令
    • 新手推薦熟悉 Linux 環境,如 Ubuntu、Kali Linux 等。
    • 基本的 CLI(Command Line Interface)操作很重要:ls, cd, grep, strings, file, wget, curl, tcpdump, nc 等都是 CTF 常用命令。
  2. 開發語言或腳本工具
    • 常見的 Python、C/C++、以及有時候需要 Node.js、Go 或 Java。
    • Python 的 requestspwntoolspycryptodome 等套件是 CTF 過程中常用的利器。
  3. 各種專業工具
    • 逆向工具:Ghidra、IDA Free、radare2、Binary Ninja (付費版)
    • 除錯器:gdb + pwndbg / peda、x64dbg
    • 網頁測試:Burp Suite、OWASP ZAP
    • 鑑識工具:Wireshark、binwalk、Autopsy
    • 密碼/雜項:CyberChef、hashcat、John the Ripper 等
  4. 虛擬機、容器
    • 使用 VirtualBox、VMware Workstation 或 Docker 方便隔離環境、安裝練習平台。

4. 練習、解題與學習路徑

4.1 先從基礎題目做起

初學者常會覺得「題目都看不懂」,建議先從題目描述清晰、難度較低的平台開始,比如 picoCTF的基礎題。

  • 先熟悉操作、嘗試用基礎工具解題。
  • 取得Flag 後要思考「為什麼能這樣解?背後原理是什麼?」。

4.2 看別人的 Writeup(解題報告)

CTF 最大的學習資源之一,就是參賽者在賽後分享的 Writeup。多看幾篇不同作者的解題過程,你會發現有些人使用的工具或技巧,比你原先的流程更快或更巧妙。

  • 例如 CTFWriteups 或國內外 CTF 戰隊的部落格、GitHub 都常分享解題心得。
  • 大會官方有時候也會匯整優秀戰隊的解題步驟。

4.3 建立自己的學習筆記

  • 在解題過程中記錄下關鍵指令錯誤原因成功原因工具使用方法
  • 遇到技術名詞、專有名詞(如 Buffer Overflow、ROP、SQL Injection、XOR Encryption 等),記得查資料、做筆記。

4.4 參加線上賽或小型賽事

  • 線上 CTF 幾乎每週都在舉辦,可以透過 CTFTime.org 查看即將舉辦的賽事、難度評價、國際排名等。
  • 不要害怕難度,哪怕只能解一兩題,也能學到很多。

5. CTF 是團隊戰,但也能朝「多邊形戰士」努力

5.1 團隊合作的重要性

CTF 通常是團體作戰,每個人負責不同領域,能互補技能:

  • Pwn + Reverse 專精的人配合 Web + Crypto 專精的人,再加上比較熟 Forensics 或系統管理的人。
  • 團隊之間能更快做出題目分配,充分利用時間。

5.2 個人全面發展

當然,有些人想要「什麼都會」,成為「多邊形戰士」。

  • 這需要投入大量時間與練習,多參加不同型態的 CTF,熟悉各種解題思維。
  • 或者在隊內多嘗試你不熟悉的題型,慢慢把知識補起來。

6. 難度不可預測,但透過不斷練習能逐漸上手

CTF 目前出題的困境:

  1. 出題者覺得簡單
  2. 參賽者就是不會

每位出題者的思維模式不同,也無法完全預測參賽者的程度。只有不斷地參加比賽、做題目、看各種解題思維,才能在面對不同風格與難度的題目時,持續成長。


7. 練習資源與推薦閱讀

  1. CTF Resource 整理
  2. AIS3
  3. CTFTime
    • ctftime.org
    • 即將舉辦的 CTF 賽事資訊、戰隊積分、歷屆題目與 Writeup 等。
  4. Writeups & Blog
  5. 練習平台
    • OverTheWire、picoCTF、Hack The Box、Hacker101 等。

8. 心態與學習建議

  1. 從錯誤中學習
    • 做 CTF 題目時,容錯率很高,「嘗試」本身就是過程。
    • 在錯誤裡面學到一點技巧,就會為日後解題留下寶貴經驗。
  2. 建立良好的知識網路
    • 多方閱讀、碰到新概念立刻記錄或嘗試實做。
    • 學習要系統化,才能在遇到陌生領域題目時,快速定位該使用何種技術、工具。
  3. 尋求社群交流
    • 加入 CTF 團隊或在社群(如 Facebook、Discord、Line 群組、PTT 資安版等)發問討論。
    • 資訊安全領域的同好相對熱心,願意教學或分享心得。
  4. 保持熱情與耐心
    • 資安與 CTF 的學習範圍很廣,需要堅持和持續練習。
    • 一旦在某題突破之後,成就感非常大,也能激勵你更加鑽研。

9. 常見 CTF 賽事推薦

CTF 賽事遍佈全球,分為線上與實體、個人與團體競賽等類型。以下是幾個值得關注的 CTF 比賽:

9.1 全球知名 CTF 賽事

  1. DEF CON CTF
    • 類型:團體賽
    • 簡介:全球最知名的 CTF,比賽分為多輪,最終在 DEF CON 資安大會中進行決賽。
    • 難度:極高(適合進階玩家)。
    • 官網DEF CON CTF
  2. Google CTF
    • 類型:團體賽(分為 Quals 線上賽與 Finals 決賽)
    • 簡介:由 Google 資安團隊舉辦,題目設計創新且具挑戰性,涵蓋 Web、Pwn、Crypto 等多題型。
    • 難度:中高(適合有基礎經驗者)。
    • 官網Google CTF
  3. PlaidCTF
    • 類型:團體賽
    • 簡介:由美國 CMU 的 Plaid Parliament of Pwning 戰隊舉辦,是一場知名度極高的 CTF 賽事。
    • 難度:中高(解題風格偏實用技術)。
    • 官網PlaidCTF
  4. HITCON CTF
    • 類型:團體賽
    • 簡介:由台灣 HITCON 社群舉辦,吸引大量國內外高手參賽,預賽通常線上舉行,決賽則在實體活動中進行。
    • 難度:高。
    • 官網HITCON CTF
  5. picoCTF
    • 類型:個人或團體賽
    • 簡介:針對新手設計的 CTF,比賽題目由淺入深,非常適合學校、個人參與。
    • 難度:低至中(新手友善)。
    • 官網picoCTF
  6. CTFzone
    • 類型:團體賽
    • 簡介:由 Positive Technologies 主辦,題目涵蓋面廣,對 Reverse 與 Pwn 題型有深入設計。
    • 難度:中高。
    • 官網CTFzone

10.2 台灣地區 CTF 賽事

  1. AIS3 EOF CTF
    • 類型:線上賽、實體營隊
    • 簡介:由台灣教育部資安人才培育計畫 AIS3 舉辦,比 AIS3 Pre-exam 來說更有挑戰性。
    • 難度:中等至進階。
    • 官網AIS3 官方網站
  2. HITCON CTF
    • HITCON 不僅是國際級賽事,也同時吸引本地參賽者,提供練習和進階玩家切磋的機會。
  3. 學校內或國內特定 CTF
    • 像是:
      • 各大學(如台灣大學、交大)的資安競賽。
      • 由資安公司或社群舉辦的小型賽事。

10. 結語

CTF 不僅是一場比賽,更是一個持續練習、實踐與交流的學習過程。從最基礎的 picoCTF 或 AIS3 Pre-exam 題目開始,再逐漸擴展到更廣的題型、更多的比賽。在這條路上,你會不斷遇到新概念與技術,不斷試錯和成長。

  • 如果你只是想「試試看」或「好奇」這個世界,建議不要給自己太大壓力,抱著學新東西的心情就好。
  • 如果你想「往資安專業發展」,CTF 絕對是訓練自己實力、累積作品和知識最有效的方式之一。

希望這篇新手指南能幫助大家理解 CTF 的起步方向,帶給大家更多信心與方法去面對各種未知的挑戰。祝大家在 CTF 路上玩得開心,也持續進步!

飛飛
飛飛