- 本篇blog首發0xffff論壇(CTF:從0到1->zero2one - 0xFFFF),中間有各位大佬補充,搬到了個人部落格CTF:從0到1 -> zero2one | c10udlnk_Log這裡,在部落格園這邊也放一下hahah。是一點CTF的入門心得吧,希望能給想玩CTF的小朋友們一點幫助。
- 起文章名的時候沒想太多光想著把to->2用上去,撞名都是我的鍋(捂頭
- 這裡還只是個划水摸魚的萌新,有什麼寫錯的地方煩請大佬們多多補充謝謝0v0
0x01 關於CTF
Ⅰ. 一點簡介
CTF(Capture The Flag,奪旗賽),就是通過程式分析、攻防對抗等形式,從比賽平臺的題目中得到一串具有一定格式的字串(被稱為flag)或其他內容,並將其提交到平臺上以奪得分數。
Ⅱ. 億點簡介
詳細簡介這東西,前人有簡介的話當然引用前人的了(捂頭跑路)。感覺目前來說看到最完整的介紹要數CTFHub裡的了 (要不是因為要去拿彩蛋的flag估計我也不會看到這些介紹hhh) 。
CTF簡介:CTF簡介 | CTFHub
關於CTF的競賽模式:競賽模式 | CTFHub
關於CTF的比賽形式:比賽形式 | CTFHub
關於CTF的題目型別:題目型別 | CTFHub
0x02 從入門到...
Ⅰ. 新手教程
1)選擇一個主攻方向
在讀完上面的億點簡介(尤其是題目型別)以後,可以試圖尋找自己對哪個方向更感興趣(web,reverse/逆向,pwn/二進位制,crypto/密碼學)。為什麼不選misc呢?因為雜項實在是太雜,建議團隊三個人都或多或少地刷一下,華師CTF新生賽裡雜項類是為數不多能做出來的題目了(捂頭跑)。
我的話目前是個摸魚的逆向手,所以對逆向方面比較熟悉(吧,打算往pwn方向延伸。
關於web方向的入門感謝@fxizenta 大佬補充【把大佬回覆貼回來,原回覆指路帖子6L】
隔壁的摸魚web來補充一下web入門
0x00 入門建議
web方向應該算是比較難入門的方向(尤其對於無基礎的萌新),完全無基礎的同學建議從w3school開始吧,期間也可以做一些簡單的題(題庫上面的dalao說的都挺不錯的),學習web方向如果沒有學習過前端、協議、命令列等基礎的知識的話,在前期是挺任意有錯敗感的,這裡建議在做題中思考了很長時間發現完全沒有思路,建議可以直接去看write up,在從wp中學習dalao們的思路,很重要的一點是,在wp中有什麼發現自己不明白的,建議善用搜尋引擎,把題目的思路瞭解清楚。
0x01 web常用工具
1. Burp Suite
web題常用工具,功能十分強大,常用於用於抓包、發包、爆破,可以在官網下載到社群版
bp的配置和簡單功能解釋:https://blog.csdn.net/u011723630/article/details/80315507
2. kali
Kali 是一個基於 Debian 的 Linux 發行版。它的目標就是為了簡單:在一個實用的工具包裡儘可能多的包含滲透和審計工具。Kali 實現了這個目標。大多數做安全測試的開源工具都被囊括在內。
kali下載: https://www.kali.org/downloads/
3. sqlmap
用於sql注入,功能十分強大包含了盲注,布林注入,cookie注入等等常見注入方式的掃描和利用,還可以自己定製繞過方法,繞過黑白名單限制。下載github上可以找到
4. dirsearch
用於站點掃描,包括掃秒常見的.git,.svn,.apk等備份檔案,以及域名下的子目錄(不過有個缺點是他只掃描常見的命名規則下的子目錄名,所以還是有一定的侷限性)。下載github上有
5. hackbar
一個瀏覽器外掛,雖然他的功能bp都有,但是對比起bp他有一個巨大優勢就是方便(老懶狗了),f12就可以開始使用,提供post和簡單編碼解碼的功能。在Chrome和Firefox的外掛商城都可以找到。ps:訪問Chrome外掛商城需要魔法(狗頭)
0x02 學習推薦
1. ctfwiki
據說每一位ctf選手都是從這裡開始的,不止web選手哦,其他方向的選手也可以去看看
https://github.com/ctf-wiki/ctf-wiki
2. 打好基礎
無基礎直接莽上來的話,你可能會完全一頭霧水,如果是完全沒有基礎的同學建議先學C/C++,一起還是從先學會一個程式語言的基礎使用開始吧,然後就可以開始學會一個指令碼語言(如python),學習php(至少要看得懂),還可以看看埠知識,傳輸協議知識等等,最重要的一點,要變做題邊學習,如果單單把重心放在flag,而不是做題的學習過程,那麼你會失去很多,也會失去打ctf最珍貴的東西。
最後附上最近剛剛結束的Tencent CTF中的獎勵於你我共勉吧
對幾個方向的一點點理解是:
-
感覺 web 相當於前端的雜項,聽說web包括的方面很多很雜,做起來令人頭大(想問具體的就去敲web手吧[甩鍋])。
-
逆向 上我感覺算是比較簡單也比較累的一個方向,入門的話只要能讀得懂C/C++原始碼就完全ojbk,後期可能需要人肉反彙編&反編譯,
做題的時候十分需要感受寧靜hhhh。 -
pwn 則是簡單逆向+漏洞利用,入門可能比較難(?
但是新生賽裡說不定就有輸入十六個b就能出flag的究極簡單題[手動狗頭]),畢竟需要在讀懂程式邏輯(一般這裡的程式邏輯沒逆向那麼難)以後,發現能利用的漏洞(比如堆疊溢位/重複free等),如果對計算機內部處理比較感興趣的同學可以試試? -
密碼學 感覺是萬物歸宗(x),後期無論做什麼題都有可能遇到密碼學(比如上次ciscn逆向到最後是一道TEA解密的問題),very需要數論基礎。
組隊的時候,可以先組人再分方向,也可以通過方向來選人,最理想的狀態是三人方向不同,優勢互補。
2)邊練邊學,刷題入門
CTF比賽過程中跟其他比賽最大的不同點就是能在網際網路查詢資料,賽後還(或許)能搜到一些題目的wp(即write up,類似於答案解析)。
如果已經發現了自己感興趣的方向,那必然是極好的,接下來就可以在一些刷題網站(如CTFHub、攻防世界、Bugku CTF等,在0x03中會有詳細介紹)中,選擇該方向的題目進行練習。剛開始的時候,或許還不懂面對題目應該做什麼,那麼可以選擇在網上找這道題目的wp(如這道題目在攻防世界上,名為easyre,那麼可以搜尋“攻防世界 easyre”,就能看到它的解題思路)。
當然,如果沒有找到方向也不用擔心,可以各個方向的題都試試跟著wp做一下,或許能在做題的過程中發現興趣點呢hhh。
初學者可以直接跟著wp復現得到flag,但跟著做的過程中也要學到做題的思路和思考方向。 在學了一些題目以後,就可以嘗試自己做一些題啦,能做出就成就感up,沒做出就繼續看wp o( ̄▽ ̄)ブ。當然,也不是每道題都有wp,但不用擔心,這些網站在新手區放的經典題基本上都會有wp的。
CTF的學習過程其實更像是積累經驗的過程,在做每一道題、打每一場比賽的賽中和賽後能學到新的知識點,也能知道自己在什麼方面有所不足、哪些點因為粗心忽略掉了。
同時,也別忘了很重要的 “自造輪子” ,CTF是用自己的電腦進行比賽的,也就是說會很依賴本地的庫和指令碼。萬一碰到不能去網際網路查資料的&#?%@比賽(真的存在XD),就意味著你需要用本地指令碼進行某個密碼演算法(比如TEA)的解密,如果沒有本地輪子就只能現打了,還是很費時間的orz。
(p.s. 在找不到線上解密的網站時,有本地的解密程式碼也很方便)
比賽入門強推:華師CTF新生賽
Ⅱ. 必先利其器
無論哪個方向,寫指令碼用的語言建議首選Python。(Python是世界上最好的語言!!)
Reverse:
- IDA pro(yyds!反彙編+反編譯必備;ida使用小技巧:IDA Pro7.0使用技巧總結)
- Ollydbg(簡稱OD,一個動態除錯工具)
- WinHex或者010 editor(讀||複製貼上十六進位制機器碼的工具)
- Ghidra(一個支援反編譯mips64的工具)
- PEiD或者ExEinfo PE(查殼工具)
- uncompyle6(.pyc反編譯為.py的工具;uncompyle6安裝使用方法)
- pintool(二進位制插樁找輸入;Pintool或者PinCTF;
有坑,目前還沒折騰出來orz 有成功的小夥伴拍我一下謝謝!2020.11 update:裝上了!才發現有坑是因為沒有升級wsl的問題(捂頭。整理於=>【從無到有】Pintool安裝&使用) - angr(超強的符號執行引擎,vm題利器(x);專案地址:angr,例題:angr-doc,題庫:angr_ctf,對於這個題庫自己寫了個angr_ctf刷題小記,非題解)
- unicorn(CPU模擬器框架,提供hook;專案地址:unicorn-engine)
- ...(想到什麼再補好了XD
Pwn:
簡單加解密?(misc):
別的方向暫時還無,建議搜尋引擎走起QvQ
0x03 安利一些前人的肩膀
Ⅰ. 一些書
【讀過給“o”標誌,簡單說一下讀後感;未讀過給“x”標誌,簡介從網路上搬過來,僅供參考。】
-
《CTF特訓營:技術詳解、解題方法與競賽技巧》【o】【全方向】
這本書裡包括Web、Reverse、PWN、Crypto、APK、IoT六個部分,據說是面向初學者的一本書。但是從閱讀體驗來看,感覺不太適合一點都沒接觸過CTF的小白(連一道題都沒做過的這種),至少在看到的逆向和pwn部分是這樣。
不過,它雖然沒有手把手帶你入門的詳細步驟,但有的是乾貨max。如果讀者是做過一點題的鹹魚選手(比如我),就會感覺學到了超多,裡面介紹和總結了很多實用的技巧和某一部分的詳細題型。很多方法就是提一嘴,讓你知道有這個東西,但具體該怎麼用、用的時候該注意什麼,就得自己去領悟了。
總結:感覺本書適合 跟著wp做了一些題目並能獨立做出幾道的初學者 及 想要往別的方向發展的現役選手。
/* 本書勘誤表:https://github.com/FlappyPig/CTF_SPECIAL_TRAINING_CAMP */
-
《從0到1:CTFer成長之路》【o】【全方向】
2020.12 update:是NU1L戰隊出的一本入門書。從讀完的逆向part來說,感覺比起上一本而言這個才是real從0到1:頁數++++,0是真的0,1也是真的1(目前只能理解到0->0.9的樣子,tcl)。
先說從0的部分,很多基礎操作都是一步步帶著走的,相信零基礎也能毫無難度的上手。而且本書還有配套練習的crackme,有點小型wp復現的感覺了。同時乾貨也有很多,ida部分推薦了一些實用外掛+其他還安利了很多挺有用的工具。btw,提一下它的angr起步講的真的很詳細,至少讓我get到了幾個常用的優化點+認識到了看文件的重要性。
然後是到1的部分,感覺有很多巧妙的高階操作,往上進階的部分講了很多(雖然書裡說是說“冰山一角”)。至於說到0.9是因為自制pintool那裡暫時不太能理解,菜雞還是先用著別人的開源pintool吧(捂頭)
總結:這本書強推給 零基礎的小朋友們 (至少逆向是這樣的),並且建議在 增強理論學習的同時可以跟著實踐一下 ,效果更佳。/* 本書勘誤表:https://book.nu1l.com/tasks/#/pages/others/bugs?id */
-
《加密與解密》【o】【Reverse && PWN】
加解密yyds!!絕對是值得反覆讀的好書=v=
雖然有點厚都是跳著看的hhh,但是打基礎真的很棒。
推薦閱讀路線(親測)是基礎篇->除錯篇(瞭解學習IDA和OD/WinDbg/...的大致用法)->解密篇(大概看看會出到的密碼演算法)->脫殼篇&&保護篇(感覺主要是脫殼和反除錯)->PE部分(走基礎)->剩下沒看的。
/* 本書勘誤表:https://bbs.pediy.com/thread-247429.htm */
-
《逆向工程權威指南(RE4B)》【x】【Reverse】
【本書專注於軟體的逆向工程,是寫給初學者的一本經典指南。全書共分為12個部分,共102章,涉及X86/X64、ARM/ARM-64、MIPS、Java/JVM等重要話題,堪稱是逆向工程技術百科全書。除了詳細講解,本書來給出了很多習題來幫助讀者鞏固所學的知識,附錄部分給出了習題的解答。】
是一本在很多逆向方向入門帖裡都會安利的書hhhh
-
《組合語言》【o】【Reverse && PWN】
這本書我覺得是彙編入門寶典,雖然講的是16位的古早8086CPU,但是把彙編的機制搞懂了以後,再看看x86/64和8086的區別就可以迅速用到題目裡面。(比如vm的反彙編)
我覺得在學習彙編上跟別的語言不同的是,最重要不是語法,而是計算機程式的執行過程、資料儲存佈局等底層的東西 ,而這本書在這方面講的很通俗易懂不枯燥,推薦xn。
-
《圖解密碼技術》【o】【Crypto】
(大致看了一些部分)就是一本很有趣的講密碼學的書!建議從前言看起發現彩蛋√
因為去年剛開學那會是抱著隨便了解了解的心態看的,所以可能對裡面專業的東西沒怎麼記得住,為了避免誤解我還是搬一段簡介吧↓
【本書以圖配文的形式,詳細講解了6種最重要的密碼技術:對稱密碼、公鑰密碼、單向雜湊函式、訊息認證碼、數字簽名和偽隨機數生成器。第一部分講述了密碼技術的歷史沿革、對稱密碼、分組密碼模式(包括ECB、CBC、CFB、OFB、CTR)、公鑰、混合密碼系統。第二部分重點介紹了認證方面的內容,涉及單向雜湊函式、訊息認證碼、數字簽名、證照等。第三部分講述了金鑰、隨機數、PGP、SSL/TLS 以及密碼技術在現實生活中的應用。】
-
《白帽子講web安全》【x】【Web】
【在網際網路時代,資料安全與個人隱私受到了前所未有的挑戰,各種新奇的攻擊技術層出不窮。如何才能更好地保護我們的資料?本書將帶你走進Web安全的世界,讓你瞭解Web安全的方方面面。黑客不再變得神祕,攻擊技術原來我也可以會,小網站主自己也能找到正確的安全道路。大公司是怎麼做安全的,為什麼要選擇這樣的方案呢?你能在本書中找到答案。詳細的剖析,讓你不僅能“知其然”,更能“知其所以然”。
本書是根據作者若干年實際工作中積累下來的豐富經驗而寫成的,在解決方案上具有極強的可操作性,深入分析了各種錯誤的解決方案與誤區,對安全工作者有很好的參考價值。安全開發流程與運營的介紹,對同行業的工作具有指導意義。】
給完全沒有了解的隔壁web方向推薦一波<(_ _)>
-
CSAPP(深入理解計算機系統) 【o】【Reverse && PWN】
推一個大佬們的學習指南/資源彙總:【CMU-CSAPP】2015 CMU 15-213 CSAPP資源彙總
同樣是沒有折騰完的一本書(癱)想對計算機底層方面有更深層次瞭解的朋友們可以試著閱讀一番=v=
Ⅱ. 一些網站
-
是一個寶藏集合網站!不僅僅是一個報名網站(去年),裡面的知識清單&訓練場也大有乾坤,建議都掃一遍=v=
-
是一個很多dalao水的論壇!乾貨很多實名安利!
不只是CTF區,其他的區也有很多好玩的帖子,建議多逛
(潛水玩家捂頭跑路)。 -
攻防世界【刷題網站】
這裡有一個專門刷題的答題區,準備新生賽的話可以考慮一下把對應方向的新手練習區按上面說的方法刷一遍hhh(其實感覺新手練習區有些題目也是偏難的XD)
而且有些比賽也是在這個平臺上舉辦的,先搞個賬號不虧2333。
-
CTFHub【刷題網站】
這個網站其實是一個hub一樣的集合類網站,這個技能樹看起來包括的方面還挺全的
(就是還沒多少題orz 畢竟新站)不過賽事中心&歷年真題&工具部分還是挺不錯的,想覆盤可以去找找題目,需要什麼工具可以找找(說不定就找到了
-
看雪【刷題網站?】
打個問號是因為我覺得它還是更偏向於論壇hhh 刷題這塊的功能沒怎麼用過。
論壇還是很不錯的,有很多幹貨&資源分享><
-
也是個乾貨&&資源的論壇集合,安利!
-
Bugku CTF【刷題網站】
刷題網站+1,各個方向的題目分類很明確,不過難度好像沒按順序排?雜項題目型別還是挺豐富的,建議安排一下。
不過新生賽以後也沒用這個刷過題了= =可能有理解偏差x
-
CTF wiki(https://wiki.x10sec.org/ or https://ctf-wiki.github.io/ctf-wiki/)
經樓下web大佬提醒,補充一個CTF各種基礎知識大全的網站!
像逆向方面我覺得題型寫得比較全,
看完說不定對新生賽有用(手動狗頭 -
突然發現0xFFFF CS Wiki上有給CTF的介紹和一些網站的集合,mark一下。
(看到pwn部分整理了少而精的連結,試圖增加pwn的工具ing
-
一個CTF相關的百科全書!各個方向的入門基礎&題目&工具都挺全的,有時間可以刷一下0v0