CTF介紹
2015/09/17 16:09一般人聽到 CTF 可能會有的反應大概就幾種:「那是什麼?」、「駭客的遊戲?聽起來好可怕」、「蛤?」,加上一個人打 CTF 太孤單,所以來寫這篇文章,向大家介紹 CTF!
所以 CTF 到底是殺小?
Capture The Flag,駭客的搶旗遊戲,Flag
通常就是一串文字,或是要達成指定的目標。
至於這個 Flag
要怎麼拿呢?基本上主辦方會架設一些有漏洞的服務系統,或者是含有漏洞的程式,又或者是把資訊隱藏在檔案裡面,挑戰者要想辦法用駭客攻擊的手法入侵系統,或者想辦法找出或解密藏在檔案或程式內隱藏的 Flag
CTF 的賽制
基本上可以分成四種:
- Jeopardy
- Attack & Defense
- King of Hill
- CGC
Jeopardy
Jeopardy 會有多道題目可以解,題目常見類型如下:
misc
綜合題,什麼都有可能,雜七雜八無法分類通常就會算成這個
pwn
目標通常會是一個服務,有漏洞可以打下來,(大多時候)會給你那個 service 的 binary
bin (revsersing)
就是需要逆向工程,不限於執行檔,也遇過各種奇怪的檔案格式
web
就是 Web 啊,不解釋(?)
題型不出幾種:SQL Injection / Command Injection / Cookie / Race Condition,但是思考要很猥瑣才有辦法解題
crypto
密碼學啊不解釋(?)
- RSA 是常考題,在 MMA CTC 2015 看到了 ECC....
- AES 也常常出現
- 各種奇怪的弱 cipher
- 頻率分析
- xor
stego
猜謎!猜謎!猜謎!
有些低品質的 CTF 根本就是在玩猜謎,所有題目有一大半都是 stego 也是有可能的
每一道題目解開都可以拿到一組 Flag
,輸入記分板之後可以換分數!
以上就是關於 Jeopardy 的介紹
Attack & Defense
每一組參賽者要維護一台主機,主機上面會跑多個服務,這些服務是由主辦方設計的,每個都含有漏洞,並且在主機上會放置有Flag
,這組Flag
會在每個回合由主辦發更新一次。
比賽方式
- 入侵其他參賽者維護的主機,偷取
Flag
- 修補自己主機上的漏洞,防止其他參賽者偷取你的
Flag
- 把對手的
Flag
遞交到主辦單位的記分板就可以獲得額外分數 - 如果成功守護自己的
Flag
也會有分數 - 如果自己的
Flag
被偷走則拿不到分數
這樣的比賽模式相較 Jeopardy ,更為接近真實的攻防環境
King of the Hill
跟 Attack & Defense 有點類似,不過每個隊伍一開始不會擁有主機,而要把主辦方提供的主機打下來然後寫入自己的Flag
(例如:改首頁),參賽者要守護已經打下來的主機,不被其他隊伍搶走,每個回合依照擁有主機的數量進行加分。
比起 Attack & Defense ,這是企業每天都真實上演,每天都要面對的狀況,更能模擬和考驗駭客在戰場上的實力
CGC
前陣子由美國國防部下屬單位(DARPA)主辦的 CTF 競賽,可以算是 Attack & Defense 的一種,但是多了一條規定,不可以由人類進行攻擊或修補漏洞,攻擊和修補必須寫程式來自動進行,人腦處理資訊的速度有限,但是電腦很快,把事情交給電腦作會是未來的發展方向
所以我說那個 CTF 戰隊呢?
台灣有不少實力堅強的戰隊、組織在打 CTF ,像是 台大217Lab、HackStuff、BambooFox ...等,都有好手齊聚一堂一起比賽,以前偶爾會跟 HackStuff 一起打比賽,後來比較少聯絡,這些隊伍都很厲害也很頂尖,但是也就只有這幾個隊伍上的了檯面,加上台科和TDoH的戰力都不太夠,而且強大的隊伍都已經夠強大了,加上一個人打CTF實在太無力,又難以拿下名次,所以打算成立一個CTF戰隊來培養實力,尋找戰友!
_____ ___ ____ __ __ ____ _____ _____ _____ _____ _ __ __
| ___/ _ \| _ \ \ \/ / / ___|_ _| ___| |_ _| ____| / \ | \/ |
| |_ | | | | |_) | \ / | | | | | |_ | | | _| / _ \ | |\/| |
| _|| |_| | _ < / \ | |___ | | | _| | | | |___ / ___ \| | | |
|_| \___/|_| \_\/_/\_\ \____| |_| |_| |_| |_____/_/ \_\_| |_|
___ _ ___ __ __
/ __|___ _ __ / |_ _ __ _ | __|/ \ / \ _ _
| (__/ _ \ ' \| | ' \/ _` | |__ \ () | () | ' \ _ _ _ _
\___\___/_|_|_|_|_||_\__, | |___/\__/ \__/|_||_(_|_|_|_)
|___/