天天看點

CTF入門指南1(Capture the flag)

英文教程:https://trailofbits.github.io/ctf/intro/careers.html

1、逆向工程

建議你得到一個IDA Pro的副本,這有免費版和學生認證書。嘗試下crack me的問題。寫出你的C語言代碼,然後進行反編譯。重複這個過程,同時更改編譯器的選項和程式邏輯。在編譯的二進制檔案中“if”聲明和“select”語句有什麼不同?我建議你專注于一個單一的原始架構:x86、x86_64或是ARM。在處理器手冊中查找你要找的,參考有:

《Practical Reverse Engineering》

《Reversing: Secrets of Reverse Engineering》

《The IDA Pro Book》

2、加密。

雖然這不是我自己的強項,但這裡有一些參考還是要看看的:

《Applied Cryptography》

《Practical Cryptography》

Cryptography I

3、ACM程式設計

選擇一個高層次的語言,我推薦使用Python或Ruby。對于Python而言,閱讀下《Dive into Python》和找一些你要加入的項目。值得一提的是Metasploit是用Ruby編寫的。關于算法和資料結構的計算機科學課也要在此類中要走很長的路。看看來自CTF和其他程式設計的挑戰,戰勝他們。專注于建立一個解決方法而不是最快或是最好的方法,特别是在你剛剛開始的時候。

4、web漏洞

有很多的網絡程式設計技術,在CTF中最流行的就是PHP和SQL。php.net網站(譯者注:需翻牆)是一個夢幻的語言參考,隻要搜尋你好奇的功能。PHP之後,看到網頁上存在的挑戰的最常見的方法就是使用Python或Ruby腳本。主要到技術有重疊,這有一本關于網絡安全漏洞的好書,是《黑客攻防技術寶典:Web實戰篇》。除此之外,在學習了一些基本技術之後,你可能也想通過比較流行的免費軟體工具來取得一些經驗。這些在CTF競争中也可能會偶爾用到,這些加密會和你憑經驗得到的加密重疊。

5、二進制練習

建議你在進入二進制練習前要完成逆向工程的學習。這有幾個你可以獨立學習的常見類型漏洞:棧溢出,堆溢出,對于初學者的格式字元串漏洞。很多是通過練習思維來辨識漏洞的類型。學習以往的漏洞是進入二進制門檻的最好途徑。推薦你可以閱讀:

《黑客:漏洞發掘的藝術》

《黑客攻防技術寶典:系統實戰篇》

《The Art of Software Security Assessment》

6、驗證/網絡

大多數的CTF團隊往往有“一個”負責驗證的人。我不是那種人,但是我建議你學習如何使用010 hex editor,不要怕做出荒謬、瘋狂、随機的猜測這些問題運作的結果是怎樣。

繼續閱讀