CTF的挑戰可按照所涉及的網絡安全範疇分成幾類。以下將會介紹各種比較常見的CTF類型:Web、Reverse、Pwn、Crypto、Forensics、Misc,讓大家看看有甚麼比較有興趣或者比較認識的範疇,也能先對於CTF的題目有一個基本概念。
這類題目主要涉及網絡安全的範疇,最常見的Web題需要挑戰者利用各種網絡漏洞來在一個前端網頁找出隱藏在背後的 Flag。
比較常見涉及的技術有:
這類題目要求挑戰者具有逆向工程相關知識,例如:彙編語言(組合語言)、加解密、熟悉各編譯器原理,也要求對於程序的理解能力、以及逆向思考、分析的能力。
逆向工程是一個非常大的領域,也需要非常多的耐心,一開始接觸更需要一段時間熟悉;不過當中解題的過程能夠訓練挑戰者對於操作系統及各種語言的理解以及逆向分析能力,也能帶來不少的樂趣。
題目一般會包含一個難以理解、經過代碼混淆 Obfuscation等的處理的一個程式,挑戰者需要透過逆向分析、解析出程式邏輯或者嘗試復原原代碼,從而找出 Flag
這類題目主要涉及二進制安全,一般需要挑戰者嘗試入侵所提供的伺服器,透過遠端程式碼執行 RCE/Remote Code Execution等的方式來在伺服器上執行命令,找出 Flag 。Pwn可以說是CTF比較高難度的題目類型了,挑戰者需要較廣泛的知識才能順利找出 Flag。
這類題目就是涉及密碼學、加解密的一類題目了。比較常見的例如題目可能會給你一個錯誤地或不小心地使用加密/演算法以致加密並不安全,而能夠利用漏洞反向推理出原文以獲得 Flag。這類題目對於數學邏輯的需求一般比較高,也需要挑戰者認識當今以至古代的密碼學。
這類題目涉及資料鑑識/數位鑑識 Data forensics/Digital forensics 的題目,一般而言挑戰者需要透過各種工具,找到在一些資料之中隱藏的 Flag。
相關的技術例如:
這類題目簡單來說就是不能歸入上述任何一類的題目。這類題目並沒有太大的準則,做起來有機會無從入手;不過在當中你會發現不少出題者爆發奇想而創造的一些很有趣的題目。基本上只能靠日常邏輯思維、解謎能力以及對於網絡安全整體的認識來解決。
以上,為大家整理了各種的CTF題目類型。不過,要注意的是,有些情況之下題目有機會其實不能被完全的歸類於一類,反而其實同時存在幾個範疇的技術。希望透過上面這個表大家都能大概知道CTF的題目是做甚麼的,也能找到自己專長的題目以及有興趣的範疇。
這篇將會是這個系列之中,作為CTF的引入的3則發文的最後一則了。下一則開始將會按照上面各種題目類型,簡單講講當中可以用到的技巧。還請大家多多期待了!