網(wǎng)絡安全CTF(Capture The Flag)奪旗賽,起源于1996年DEFCON全球黑客大會,在網(wǎng)絡安全領域中指的是網(wǎng)絡安全技術人員之間進行技術競技的一種比賽形式。
CTF競賽涉及各種安全領域,如網(wǎng)絡攻擊、密碼學、逆向工程、Web安全等,參與者通過解決一系列安全挑戰(zhàn)來獲取旗幟(flag)并贏得比賽。
CTF競賽設有多個題目,每個題目代表一個安全挑戰(zhàn)。這些題目可能要求參賽者進行逆向工程解密、網(wǎng)絡協(xié)議解析、漏洞利用、編程等。
每個題目都隱藏了一個旗幟(flag),參賽者需要通過技術手段獲取這些旗幟。通常旗幟是一個特定格式的字符串(例如,flag{example_flag}),參賽者獲取旗幟后提交給平臺進行得分。
CTF競賽以得分為依據(jù),參賽隊伍根據(jù)解決問題的數(shù)量和難度獲得相應的得分。通常有一個排行榜會實時顯示每個隊伍的得分情況。
目前國內(nèi)比較大型的CTF比賽,有TCTF,XCTF,AliCTF,XDCTF,HCTF,ISCC等。
CTF有哪些競賽模式?
解題模式(Jeopardy):題目主要包含逆向、漏洞挖掘與利用、Web滲透、密碼、取證、隱寫、安全編程等類別。在解題模式CTF賽制中,參賽隊伍可以通過互聯(lián)網(wǎng)或者現(xiàn)場網(wǎng)絡參與,這種模式的CTF競賽與ACM編程競賽、信息學奧賽比較類似,以解決網(wǎng)絡安全技術挑戰(zhàn)題目的分值和時間來排名,通常用于在線選拔賽。
攻防模式(Attack-Defense):在攻防模式CTF賽制中,參賽隊伍在網(wǎng)絡空間互相進行攻擊和防守,挖掘網(wǎng)絡服務漏洞并攻擊對手服務來得分,修補自身服務漏洞進行防御來避免丟分。攻防模式CTF賽制可以實時通過得分反映出比賽情況,最終也以得分直接分出勝負,是一種競爭激烈,具有很強觀賞性和高度透明性的網(wǎng)絡安全賽制。
混合模式(Mix):結合了解題模式與攻防模式的CTF賽制,比如參賽隊伍通過解題可以獲取一些初始分數(shù),然后通過攻防對抗進行得分增減的零和游戲,最終以得分高低分出勝負。采用混合模式CTF賽制的典型代表如iCTF國際CTF競賽。
新人參加CTF有哪些好處呢?
參與CTF競賽可以促進個人成長,為網(wǎng)絡安全領域的職業(yè)發(fā)展打下堅實基礎。有過相關經(jīng)驗,獲得好成績,一定是能夠為自己加分的。
首先、能夠學習和提高安全技能:通過挑戰(zhàn)不同類型的安全問題,參賽者可以提高自己在各個安全領域的技能和知識。
第二、能夠獲取實戰(zhàn)經(jīng)驗:CTF競賽提供了一個模擬實戰(zhàn)環(huán)境,讓參賽者能夠在安全挑戰(zhàn)中應用所學知識,鍛煉實際操作能力。
第三、能夠理解團隊合作:CTF競賽通常以團隊形式進行,促進了隊伍成員之間的合作和交流,提高了參賽者的團隊協(xié)作能力。
第四、善于發(fā)現(xiàn)安全漏洞:通過解決題目,參賽者可以學習到各種安全漏洞和攻擊技術,加深對網(wǎng)絡安全的理解。
那么新人要怎么學CTF?
首先,你需要了解CTF主要考哪些內(nèi)容。
MISC(安全雜項):全稱Miscellaneous。題目涉及流量分析、電子取證、人肉搜索、數(shù)據(jù)分析、大數(shù)據(jù)統(tǒng)計等等,覆蓋面比較廣。
PPC(編程類):全稱Professionally Program Coder。題目涉及到程序編寫、編程算法實現(xiàn),算法的逆向編寫,批量處理等。
REVERSE(逆向):全稱reverse。題目涉及到軟件逆向、破解技術等,要求有較強的反匯編、反編譯扎實功底。需要掌握匯編,堆棧、寄存器方面的知識。
PWN(溢出):PWN在黑客俚語中代表著攻破,取得權限,在CTF比賽中它代表著溢出類的題目,其中常見類型溢出漏洞有棧溢出、堆溢出。
WEB(web類):WEB應用在今天越來越廣泛,也是CTF奪旗競賽中的主要題型,題目涉及到常見的Web漏洞,諸如注入、XSS、文件包含、代碼審計、上傳等漏洞。這些題目都不是簡單的注入、上傳題目,至少會有一層的安全過濾。
CRYPTO(密碼學):全稱Cryptography。題目考察各種加解密技術,包括古典加密技術、現(xiàn)代加密技術甚至出題者自創(chuàng)加密技術。
STEGA(隱寫):全稱Steganography。題目的Flag會隱藏到圖片、音頻、視頻等各類數(shù)據(jù)載體中供參賽選手獲取。載體就是圖片、音頻、視頻等,可能是修改了這些載體來隱藏flag,也可能將flag隱藏在這些載體的二進制空白位置。
基于以上如何學習呢?
先了解基本網(wǎng)站架構、基礎網(wǎng)站開發(fā)原理,基礎的前后端知識,能夠讓你之后的漏洞學習暢通無阻。內(nèi)容包括:
1、前端三要素: html、css、js是被瀏覽器解析的代碼,是構成靜態(tài)頁面的基礎。也是前端漏洞如xss、csrf的基礎。你要做到能夠寫出簡單表單,能夠通過js獲取DOM元素,控制DOM樹即可。
2、apache+php:通過apache+php體會一下網(wǎng)站后端的工作,客戶端瀏覽器通過請求apache服務器上的php腳本,php執(zhí)行后生成的html頁面返回給瀏覽器進行解析。這個模塊你需要了解基本網(wǎng)站原理,了解php基本語法,開發(fā)簡單動態(tài)頁面。
3、mysql:這是一款典型的關系型數(shù)據(jù)庫,一般來說,大部分網(wǎng)站都會帶有數(shù)據(jù)庫進行數(shù)據(jù)存儲。這個模塊主要是能夠用sql語句實現(xiàn)增刪改查,并且能用php+mysql開發(fā)一個增刪改查的管理系統(tǒng)。
4、python
搞安全經(jīng)常需要寫一些腳本或工具來進行諸如密碼爆破、目錄掃描、攻擊自動化等操作,需要一個方便且趁手的編程語言。你需要了解python基礎語法,能夠用python爬取網(wǎng)站上的信息(requests+BeautifulSoup+re)
5、burpsuite (必備的滲透工具)
重點學習Proxy、Repeater、Intruder三個模塊,分別用于抓包放包、重放包、爆破初步使用即可。能夠用burpsuite抓包改包、爆破用戶名密碼。
6、SQL注入
能夠手工注入出任意表的數(shù)據(jù),熟悉三種盲注的手法,能夠通過sql注入實現(xiàn)任意文件讀取和任意文件寫入,能夠自己編寫一個不含sql注入的查詢功能。
7、文件上傳
會寫php的webshell,明白webshell的原理,熟悉常見的文件上傳繞過方法(如過后綴檢測、過文件頭檢測、過MIME類型檢測),能夠自己編寫一個不含漏洞的上傳功能。
8、其他漏洞
以下四個為中期要掌握的漏洞
命令執(zhí)行(RCE):php常見的代碼執(zhí)行(eval)、命令執(zhí)行(system)函數(shù)
文件包含:file協(xié)議、php偽協(xié)議的利用
XSS:通過XSS獲取用戶cookie