CTF web安全45天入門學習路線

b1ackc4t發表於2022-01-23

前言

因為最近在準備開發CTF學習平臺,先做一個學習路線的整理,順便也是對想學web的學弟學妹的一些建議。

學習路線

初期

剛剛走進大學,入了web安全的坑,面對諸多漏洞必然是迷茫的,這時的首要任務就是打好網站開發的基礎,曾有偉人說過-"自己不會做網站,何談去找網站的漏洞",在學習漏洞前,瞭解基本網站架構、基礎網站開發原理,基礎的前後端知識,能夠讓你之後的漏洞學習暢通無阻。

html+css+js(2-3天)

前端三要素 html、css、js是被瀏覽器解析的程式碼,是構成靜態頁面的基礎。也是前端漏洞如xss、csrf的基礎。

重點了解html和js

apache+php (4-5天)

推薦使用phpstudy來進行傻瓜式安裝,可以少走很多彎路。通過apache+php體會一下網站後端的工作,客戶端瀏覽器通過請求apache伺服器上的php指令碼,php執行後生成的html頁面返回給瀏覽器進行解析。

重點了解php

mysql (2-3天)

之前已經安裝的phpstudy可以輕易的安裝mysql。mysql是一款典型的關係型資料庫,一般來說,大部分網站都會帶有資料庫進行資料儲存。

重點了解sql語句

python (2-3天)

雖然 “php是最好的語言”,但它主要還是應用在服務端做網站開發,我們搞安全經常需要寫一些指令碼或工具來進行諸如密碼爆破、目錄掃描、攻擊自動化等操作,需要一個方便且趁手的程式語言,這裡我推薦python

重點學習requests、BeautifulSoup、re這三個庫

burpsuite (1-2天)

web安全的工具很多,但我覺得必備的滲透工具還得是它

重點學習Proxy、Repeater、Intruder三個模組,分別用於抓包放包、重放包、爆破

初步使用即可,在中期的漏洞學習中去逐漸熟練它


中期

此時我們對網站已經不再陌生,能夠自己動手完成一個簡單站點。但我們寫出來的程式碼真的安全嗎?進入中期,我們便要開始著眼經典漏洞的學習。

一個漏洞的學習,要搞明白三點(每學完一個漏洞就問自己這三個問題):

  1. 如何利用這個漏洞進行惡意操作?
  2. 為什麼會產生這個漏洞?
  3. 如何修復這個漏洞?

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注入的查詢功能

檔案上傳(7-8天)

webshell是可以進行程式碼執行的木馬

而檔案上傳其實就是想辦法把webshell上傳到目標的伺服器上去併成功解析,達到控制目標伺服器的目的,這也是web安全的一個重點內容

  • 推薦學習資料
    • upload-labs 幾乎涵蓋所有上傳漏洞型別
    • buuctf 找相關的真題進行練習
      • [ACTF2020 新生賽]Upload
    • 趁手的webshell管理工具: 蟻劍
  • 能力要求: 會寫php的webshell,明白webshell的原理,熟悉常見的檔案上傳繞過方法(如過字尾檢測、過檔案頭檢測、過MIME型別檢測),能夠自己編寫一個不含漏洞的上傳功能

其他漏洞(14-15天)

以上兩個漏洞是我認為一個初學者最應該掌握也是最典型的漏洞,涵蓋了程式碼執行、檔案操作、資料庫操作等web應用的主體內容。然而web安全的世界還有很多的漏洞需要你去探索,不過學會了這兩種漏洞的你去學其他漏洞定然是遊刃有餘,不會像剛開始那麼困惑了。

以下四個為中期要掌握的漏洞

  1. 命令執行(RCE)
    • php常見的程式碼執行(eval)、命令執行(system)函式
  2. 檔案包含
    • file協議、php偽協議的利用
  3. XSS
    • 通過XSS獲取使用者cookie
  4. CSRF
    • 通過csrf讓使用者點選惡意連結就觸發敏感操作

後期

此時的你熟悉了web安全幾個核心的漏洞,並且有了一些ctf題目的練習經驗,已經是一個合格的ctfer了。恭喜你。成功入門web安全。後續的學習方法或許該由你自己決定,我在此只給一些建議。

多多參與CTF賽事

參與當下舉行的ctf賽事是最好的學習方法之一,即使是初學者也能夠找到一些適合自己能力的賽事,比如極客大挑戰、UNCTF、各個大學的新生賽等等都是不錯的選擇,在比賽中去發現自己知識的不足,然後去針對的補充這部分知識,是很好的學習迴圈,無需迷茫的去到處獲取知識,而是在需要時去學習

Tips: 或許有人覺得直接刷題是一樣的,但完全不是,當下比賽中的題往往更加前沿和流行,你可以找到當下的ctf題目趨勢,緊跟技術熱點,而且可以多多融入ctf競技的氛圍中,成長的更快。

  • ctfhub 可以很方便的檢視最近舉行的ctf賽事

多多看其他師傅的部落格

打完ctf比賽的你肯定是想看writeup(答案)的,一般來說賽後過幾天就會有很多師傅發出他的writeup,從比賽群、百度等途徑都可以找到。多多看看其他師傅的解題思路,關注幾個大牛,看看他們發的技術文章,都是很好的學習方法。


總結

web是個大坑,進去容易出去難,入門容易提升難,希望選擇web的學弟學妹能夠堅持在web安全這條路走下去,不要中途變了心。

相關文章