點進這篇文章的你,大概是想知道 到底怎樣才能入門 CTF

(至於什麼是 CTF這邊這邊 都有簡單的介紹~)

網路上的建議常常是「就常打比賽阿」、「有很多線上練習站阿」,諸如此類的,

但是打比賽,那些題目都有一定的難度,對一個新手來說真的不太友善,而且能不能找到隊友都是一個問題了...QAQ

線上練習站,很多也都講得不清不楚,提示也給得很少,就只給你一個目標,然後要你「通靈」去破解它....

因此,這篇會嘗試分享一下我個人是怎麼入門的,以及給出一些建議。

 

我是先學了資安概論,對於基本的資安有大方向的理解,包括密碼學、網頁/網路安全、常見攻擊手法等。

然後也學了作業系統,理解了程序、權限管理、.data/.text/Heap/Stack 等觀念,當然也學了組合語言。

其實我是已經學了不少東西才入門的,還包括了一些 HTML、JS、PHP 以及一些 Linux 指令。

最後一步,是有前輩的意見和指點,才能順利入門。

(入門以後,還上了 CTF 相關的課程,受益良多)

 

分享完我自己是如何入門的以後,接下來會提供一些給新手的建議~

如果你也想入門 CTF,你並不需要像我一樣學這麼多「先備知識」才來碰它;

相反的,我覺得比較好的方式應該是一邊碰、一邊學;問題導向比較有驅動力,再說也沒有 "學完了" 的那一天。

一點點基礎知識通常是需要的,所以建議先對資安有概論性的理解,

然後 CTF 相關的課程也會有幫助(見底下 "知識" 小節)

在開始之前,我想先送你一句話,那就是「要投入夠多的時間,你的 CTF 能力才會變強」

高手都是花很多時間功夫才成為高手的。

然後多去查相關資料,補充新知識,來打敗難題!

 

練習

對於該從哪裡下手,我首先會推薦 PicoCTF

別看它標榜是給中學生,它的題目可是很不錯的

註冊完以後,按 Challenge Problems 就可以瀏覽各種類型的題目。

它的題目都是階段性的,也就是說不會一次看到全部的題目,要解完一題才會跑出相關的進階題~

如果你希望更基礎一點的話,我會推薦 OverTheWire Wargames

舉例來說,Bandit 系列,它的 Level 0 就是要你使用 SSH 遠端登入。

你如果不知道 SSH 是什麼,它的提示頁上面有附一些文章連結,還會給一些 "可能會用到的指令",

通常你會用到的就是那上面的其中一個,當然你也可以去 Google 那些指令,去了解更多相關資訊。

它的 Vortex Semtex 系列也滿友善的,其他就比較還好。

如果你已經有 reverse + pwn + BOF 經驗的話,你也可以玩玩看 Pwnable.tw

通常,CTF 的題目會分為 reverse、pwn、crypto、web 以及其他。

reverse 就是跟執行擋以及組合語言打交道;pwn 則是 reverse 的進階課,要入侵對方主機;

crypto 是在玩密碼學;而 web 則是網頁前端 (eg. JS) 跟後端 (eg. PHP) 的漏洞。

 

知識

資安概論 可以讓你有全盤的理解,而 "Hacking Exposed: Network Security Secrets and Solution" 通常會是其指定用書。

Erickson"Hacking: The Art of Exploitation" 也不錯,它是比較偏實務導向的書。

組合語言 也是重要的能力,reverse pwn 都會用到。(學 x86/amd64 的,那些才是現實中會用到的)

如果要玩 BOF、pwn,一定要了解 Stack frame 以及 Calling convention,

這部分有一些 CTF 相關的課程可以參考,像是 RPISEC 的公開課程,或是許富皓老師的課程。

交大的 CTF 社群 Bamboofox 也有豐富的社課資源。(他們的題目也很棒)

web 的話需要了解 HTTP 協定、前後端的語言 (JS/PHP)、SQL 等等,適合有在寫網站的人(沒有的話也可以順便學XD)

玩 crypto 的話需要了解 RSA 以及一些奇奇怪怪的加密方式XD

知識的部分,我覺得 這個投影片 是不錯的總攬。

 

最後,有前輩可以問也是滿不錯的,特別是遇到題目解不開時,

所以建議加個社群,像是 這裡 就提到滿多的台灣社群。

以上就是關於如何入門 CTF 的簡單介紹囉~

 

arrow
arrow

    Davidhu127 發表在 痞客邦 留言(1) 人氣()