一、CTF簡介
CTF(Capture The Flag)中文一般譯作奪旗賽,在網絡安全領域中指的是網絡安全技術人員之間進行技術競技的一種比賽形式。CTF起源于1996年DEFCON全球黑客大會,以代替之前黑客們通過互相發起真實攻擊進行技術比拼的方式。發展至今,已經成為全球范圍網絡安全圈流行的競賽形式,2013年全球舉辦了超過五十場國際性CTF賽事。而DEFCON作為CTF賽制的發源地,DEFCON CTF也成為了目前全球最高技術水平和影響力的CTF競賽,類似于CTF賽場中的“世界杯” 。
二、CTF競賽模式
- 解題模式(Jeopardy):在解題模式CTF賽制中,參賽隊伍可以通過互聯網或者現場網絡參與,這種模式的CTF競賽與ACM編程競賽、信息學奧賽比較類似,以解決網絡安全技術挑戰題目的分值和時間來排名,通常用于在線選拔賽。題目主要包含逆向、漏洞挖掘與利用、Web滲透、密碼、取證、隱寫、安全編程等類別。
- 攻防模式(Attack-Defense):在攻防模式CTF賽制中,參賽隊伍在網絡空間互相進行攻擊和防守,挖掘網絡服務漏洞并攻擊對手服務來得分,修補自身服務漏洞進行防御來避免丟分。攻防模式CTF賽制可以實時通過得分反映出比賽情況,最終也以得分直接分出勝負,是一種競爭激烈,具有很強觀賞性和高度透明性的網絡安全賽制。在這種賽制中,不僅僅是比參賽隊員的智力和技術,也比體力(因為比賽一般都會持續48小時及以上),同時也比團隊之間的分工配合與合作。
- 混合模式(Mix):結合了解題模式與攻防模式的CTF賽制,比如參賽隊伍通過解題可以獲取一些初始分數,然后通過攻防對抗進行得分增減的零和游戲,最終以得分高低分出勝負。采用混合模式CTF賽制的典型代表如iCTF國際CTF競賽。
三、CTF各大題型簡介
- MISC(安全雜項):全稱Miscellaneous。題目涉及流量分析、電子取證、人肉搜索、數據分析、大數據統計等等,覆蓋面比較廣。我們平時看到的社工類題目;給你一個流量包讓你分析的題目;取證分析題目,都屬于這類題目。主要考查參賽選手的各種基礎綜合知識,考察范圍比較廣。
- PPC(編程類):全稱Professionally Program Coder。題目涉及到程序編寫、編程算法實現。算法的逆向編寫,批量處理等,有時候用編程去處理問題,會方便的多。當然PPC相比ACM來說,還是較為容易的。至于編程語言嘛,推薦使用Python來嘗試。這部分主要考察選手的快速編程能力。
- CRYPTO(密碼學):全稱Cryptography。題目考察各種加解密技術,包括古典加密技術、現代加密技術甚至出題者自創加密技術。實驗吧“角斗場”中,這樣的題目匯集的最多。這部分主要考查參賽選手密碼學相關知識點。
- REVERSE(逆向):全稱reverse。題目涉及到軟件逆向、破解技術等,要求有較強的反匯編、反編譯扎實功底。需要掌握匯編,堆棧、寄存器方面的知識。有好的邏輯思維能力。主要考查參賽選手的逆向分析能力。此類題目也是線下比賽的考察重點。
- STEGA(隱寫):全稱Steganography。隱寫術是我開始接觸CTF覺得比較神奇的一類,知道這個東西的時候感覺好神奇啊,黑客們真是聰明。題目的Flag會隱藏到圖片、音頻、視頻等各類數據載體中供參賽選手獲取。載體就是圖片、音頻、視頻等,可能是修改了這些載體來隱藏flag,也可能將flag隱藏在這些載體的二進制空白位置。有時候需要你偵探精神足夠的強,才能發現。此類題目主要考查參賽選手的對各種隱寫工具、隱寫算法的熟悉程度。實驗吧“角斗場”的隱寫題目在我看來是比較全的,以上說到的都有涵蓋。新手盆友們可以去了解下。
- PWN(溢出):PWN在黑客俚語中代表著攻破,取得權限,在CTF比賽中它代表著溢出類的題目,其中常見類型溢出漏洞有棧溢出、堆溢出。在CTF比賽中,線上比賽會有,但是比例不會太重,進入線下比賽,逆向和溢出則是戰隊實力的關鍵。主要考察參數選手漏洞挖掘和利用能力。
- WEB(web類):WEB應用在今天越來越廣泛,也是CTF奪旗競賽中的主要題型,題目涉及到常見的Web漏洞,諸如注入、XSS、文件包含、代碼審計、上傳等漏洞。這些題目都不是簡單的注入、上傳題目,至少會有一層的安全過濾,需要選手想辦法繞過。且Web題目是國內比較多也是大家比較喜歡的題目。因為大多數人開始安全都是從web日站開始的。
四、CTF學習路線
4.1、初期
剛剛走進大學,入了web安全的坑,面對諸多漏洞必然是迷茫的,這時的首要任務就是打好網站開發的基礎,曾有偉人說過-“自己不會做網站,何談去找網站的漏洞”,在學習漏洞前,了解基本網站架構、基礎網站開發原理,基礎的前后端知識,能夠讓你之后的漏洞學習暢通無阻。
1、html+css+js(2-3天)
前端三要素 html、css、js是被瀏覽器解析的代碼,是構成靜態頁面的基礎。也是前端漏洞如xss、csrf的基礎。
☆重點了解html和js
推薦學習資料:
- https://www.runoob.com/
- https://www.w3school.com.cn/
能力要求:
- 能夠寫出簡單表單,能夠通過js獲取DOM元素,控制DOM樹即可。
2、apache+php (4-5天)
推薦使用phpstudy來進行傻瓜式安裝,可以少走很多彎路。通過apache+php體會一下網站后端的工作,客戶端瀏覽器通過請求apache服務器上的php腳本,php執行后生成的html頁面返回給瀏覽器進行解析。
☆重點了解php
推薦學習資料:
- https://www.runoob.com/
- https://www.w3school.com.cn/
能力要求:
- 了解基本網站原理,了解php基本語法,開發簡單動態頁面
3、mysql (2-3天)
之前已經安裝的phpstudy可以輕易的安裝mysql。mysql是一款典型的關系型數據庫,一般來說,大部分網站都會帶有數據庫進行數據存儲。
☆重點了解sql語句
推薦學習資料:
- https://www.runoob.com/
- https://www.w3school.com.cn/
能力要求:
- 能夠用sql語句實現增刪改查,并且能用php+mysql開發一個增刪改查的管理系統(如學生管理系統)
4、python (2-3天)
雖然 “php是最好的語言”,但它主要還是應用在服務端做網站開發,我們搞安全經常需要寫一些腳本或工具來進行諸如密碼爆破、目錄掃描、攻擊自動化等操作,需要一個方便且趁手的編程語言,這里我推薦python
☆重點學習requests、BeautifulSoup、re這三個庫
推薦學習資料
- https://www.runoob.com/
- https://www.w3school.com.cn/
能力要求:
- 了解python基礎語法,能夠用python爬取網站上的信息(requests+BeautifulSoup+re)
5、burpsuite?(1-2天)
web安全的工具很多,但我覺得必備的滲透工具還得是它
重點學習Proxy、Repeater、Intruder三個模塊,分別用于抓包放包、重放包、爆破
初步使用即可,在中期的漏洞學習中去逐漸熟練它
推薦學習資料
- DVWA之暴力破解
能力要求:
- 能夠用burpsuite抓包改包、爆破用戶名密碼
4.2、中期
此時我們對網站已經不再陌生,能夠自己動手完成一個簡單站點。但我們寫出來的代碼真的安全嗎?進入中期,我們便要開始著眼經典漏洞的學習。
一個漏洞的學習,要搞明白三點(每學完一個漏洞就問自己這三個問題):
- 如何利用這個漏洞?
- 為什么會產生這個漏洞?
- 如何修復這個漏洞?
1、SQL注入(7-8天)
我們web狗學習的第一個漏洞一般都是SQL注入,它是web安全經典中的經典,也是在這里被灌輸 “永遠不信任用戶的輸入” 的口號,即使是現在sql注入也依舊存在,并且它還在不斷衍生出如nosql注入、ORM注入等,可謂防不勝防。
推薦學習資料:
- sqli-labs:如何使用它網上有很多教學,wp也有很多大佬寫了 這里貼一個https://blog.csdn.net/wang_624/article/details/101913584
- sqlmap:sql注入神器,有余力可以去看看它的源碼,學習一下大佬進行sql注入并把它自動化的思路
- buuctf:找相關的真題進行練習 wp百度一搜就有
- [極客大挑戰 2019]EasySQL
- [極客大挑戰 2019]LoveSQL
- [SUCTF 2019]EasySQL
能力要求:
- 能夠手工注入出任意表的數據,熟悉三種盲注的手法,能夠通過sql注入實現任意文件讀取和任意文件寫入,能夠自己編寫一個不含sql注入的查詢功能
2、文件上傳(7-8天)
webshell是可以進行代碼執行的木馬
而文件上傳其實就是想辦法把webshell上傳到目標的服務器上去并成功解析,達到控制目標服務器的目的,這也是web安全的一個重點內容
推薦學習資料
- upload-labs:幾乎涵蓋所有上傳漏洞類型
- buuctf:找相關的真題進行練習([ACTF2020 新生賽]Upload)
- 趁手的webshell管理工具: 蟻劍
能力要求:
- 會寫php的webshell,明白webshell的原理,熟悉常見的文件上傳繞過方法(如過后綴檢測、過文件頭檢測、過MIME類型檢測),能夠自己編寫一個不含漏洞的上傳功能
3、其他漏洞(14-15天)
以上兩個漏洞是我認為一個初學者最應該掌握也是最典型的漏洞,涵蓋了代碼執行、文件操作、數據庫操作等web應用的主體內容。然而web安全的世界還有很多的漏洞需要你去探索,不過學會了這兩種漏洞的你去學其他漏洞定然是游刃有余,不會像剛開始那么困惑了。
以下四個為中期要掌握的漏洞
- 命令執行(RCE):php常見的代碼執行(eval)、命令執行(system)函數
- 文件包含:file協議、php偽協議的利用
- XSS:通過XSS獲取用戶cookie
- CSRF:通過csrf讓用戶點擊惡意鏈接就觸發敏感操作
4.3、后期
此時的你熟悉了web安全幾個核心的漏洞,并且有了一些ctf題目的練習經驗,已經是一個合格的ctfer了。恭喜你。成功入門web安全。后續的學習方法或許該由你自己決定,我在此只給一些建議。
多多參與CTF賽事
參與當下舉行的ctf賽事是最好的學習方法之一,即使是初學者也能夠找到一些適合自己能力的賽事,比如極客大挑戰、UNCTF、各個大學的新生賽等等都是不錯的選擇,在比賽中去發現自己知識的不足,然后去針對的補充這部分知識,是很好的學習循環,無需迷茫的去到處獲取知識,而是在需要時去學習。
Tips: 或許有人覺得直接刷題是一樣的,但完全不是,當下比賽中的題往往更加前沿和流行,你可以找到當下的ctf題目趨勢,緊跟技術熱點,而且可以多多融入ctf競技的氛圍中,成長的更快。
- ctfhub:可以很方便的查看最近舉行的ctf賽事
多多看其他師傅的博客
打完ctf比賽的你肯定是想看writeup(答案)的,一般來說賽后過幾天就會有很多師傅發出他的writeup,從比賽群、百度等途徑都可以找到。多多看看其他師傅的解題思路,關注幾個大牛,看看他們發的技術文章,都是很好的學習方法。
五、CTF學習資源
5.1、CTF賽題復現平臺
- BUUCTF
- 擁有大量比賽的復現環境
- 國內較早使用動態靶機的CTF復現平臺·定期舉辦各類公開賽
- 提供平臺開源環境·較全的比賽Writeup
- CTFHub
- 各類比賽歷年真題
- 較為體系化的技能樹
- 較全的CTF工具集
- 較全的賽事日歷
- 較全的比賽WriteUp
- BugKu
- 國內較早的CTF復現平臺(在buu和ctfhub還沒火的時候bugku很有名)·較為基礎的題目
- 較全的WriteUp
- Pwnable
- 適合Pwn新手入門題目較為友好
5.2、賽事與資訊
- DEF CON CTF
- 國際最頂尖的CTF賽事
- 主賽事+外卡賽
- 決賽與DEF CON同期舉辦
- CTFTime
- 較全的國際CTF賽事信息·
- 較全的CTF戰隊信息·
- 較為權威的CTF戰隊排名。
- 各大賽事WriteUp
- 各大賽事日歷
- BUUCTF
- 前面說過不重復講了
- XCTF國際聯賽
- 國內較早的CTF聯賽
- 國內第一個出海辦比賽的CTF賽事·
- 在國際上具有一定知名度
- 部分學校可以加分甚至保研
各類賽事太多了,這里沒法——羅列,大家前期可以刷一些校賽和小比賽,進階刷i春秋、XCTF,后期直接刷CTFTime各類國際賽
5.3、博客與論壇
- 先知社區:https://xz.aliyun.com。
- 看雪論壇:bbs.pediy.com/。
- 安全客:anquanke.com/.
- FreeBuf freebuf.com/。
- P神博客leavesongs.com/。
- 代碼審計t.zsxq.com/UrJiUBY·
- 漏洞百出t.zsxq.com/fEmluBe.
- CTFWP@Nu1 Lt.zsxq.com/JluJi23
5.4、書籍推薦
- CTF WiKi
- CTF竟賽中的進階知識.
- CTF竟賽中的優質題目·
- 較全的學習路徑
- 完全開源,可以離線化部署
- 從0到1: CTFer成長之路
- Nu1L占戰隊編著
- 覆蓋了CTF各方向學習路徑。
- 團隊協作與管理經驗分享
- CTF特訓營
- FlappyPig編著
- 常見CTF題型解題方法·
- 各種競賽模式技巧
- 白帽子講Web安全
- Web入門經典書籍
- 適合Web方向在學習CTF之前看
- 加密與解密(第4版)
- 逆向入門必看書籍·
- 源自實戰、指導實戰.
- 買就完了
六、最后
學之前的思考:分析賽題情況
- PWN、Reserve偏重對匯編、逆向的理解
- Crypto偏重對數學、算法的深入學習
- Web編程對技巧沉淀、快速搜索能力的挑戰
- Misc則更為復雜,所有與計算機安全挑戰有關的都算在其中
常規做法
- A方向:PWN+Reserver+Crypto隨機搭配
- B方向:Web+Misc組合
其實Misc所有人都可以做
惡補基礎知識&信息安全專業知識
推薦圖書:
A方向:
- RE for Beginners(逆向工程入門)
- IDA Pro權威指南
- 揭秘家庭路由器0day漏洞挖掘技術
- 自己動手寫操作系統
- 黑客攻防寶典:系統實戰篇
B方向:
- Web應用安全權威指南
- Web前端黑客技術揭秘
- 黑客秘籍——滲透測試使用指南
- 黑客攻防寶典WEB實戰篇
- 代碼審計:企業級Web代碼安全架構
??網安資料
?為了幫助大家更好的學習網絡安全,我給大家準備了一份網絡安全入門/進階學習資料,里面的內容都是適合零基礎小白的筆記和資料,不懂編程也能聽懂、看懂,所有資料共282G,朋友們如果有需要全套網絡安全入門+進階學習資源包,可以點擊免費領取(如遇掃碼問題,可以在評論區留言領取哦)~
《網絡安全入門+進階學習資源包》CSDN大禮包:《黑客&網絡安全入門&進階學習資源包》免費分享
?👉網安(嘿客紅藍對抗)所有方向的學習路線👈
對于從來沒有接觸過網絡安全的同學,我們幫你準備了詳細的學習成長路線圖。可以說是最科學最系統的學習路線,大家跟著這個大的方向學習準沒問題。
????
?學習資料工具包
壓箱底的好資料,全面地介紹網絡安全的基礎理論,包括逆向、八層網絡防御、匯編語言、白帽子web安全、密碼學、網絡安全協議等,將基礎理論和主流工具的應用實踐緊密結合,有利于讀者理解各種主流工具背后的實現機制。
????
網絡安全源碼合集+工具包
??
視頻教程
??
?面試題資料
獨家渠道收集京東、360、天融信等公司測試題!進大廠指日可待!
????全部資料共282G,朋友們如果有需要全套網絡安全入門+進階學習資源包,可以點擊免費領取(如遇掃碼問題,可以在評論區留言領取哦)~
黑客/網安大禮包:CSDN大禮包:《黑客&網絡安全入門&進階學習資源包》免費分享
對于每一個從事網絡安全的人來說,龐大的網絡都如宇宙般浩瀚無垠,而作為這個聯通世界的巨網的保衛者,我們當心存敬畏。