CTF萌新入坑指南(web篇)

k1ling發表於2020-09-27

ps:其實在寫這篇入坑指南的時候內心還是十分掙扎的,畢竟大佬太多而我自己太太太太菜,然鵝我也不好拒絕溫柔善良的鄭童鞋的邀請,因此這篇文章只面向最最最新的萌新,各位大佬請自行忽略

前言

 web在ctf裡面佔到的比重還是蠻大的,從國內有ctf賽事以來,web就一直是各
 路出題人的寵兒,就比如說前段時間的某次分割槽賽初賽題目構成是7pwn 7web 
 1re 1misc,雖然在我看來這個題目分配過於偏激且離譜了,但是足以看出web
 在ctf中的重要性,線下賽pwn佬可能更加關鍵,不過web手對於每個隊伍都是不
 可或缺的,總體來說基礎web題的難度不是很大,但是內容很多,所以想要以
 web作為主項的小夥伴一定要加倍努力奧。

準備工作

web方向的工具還是很多的,這裡推薦幾個常用的神器

burp suite

別問,問就是神器,用過的都說好!
(什麼?不用burp?我的天哪 真有自斷一臂的web選手嗎)

burp 是一款web領域的跨平臺工具,整合了代理、重放、暴力破解、解碼等等多個模組,模組之間共享http訊息框架來實現共享資訊,大大提高了解web題目的效率。

條件:需要預裝java環境
下載地址:get到burp的途徑有兩種,一種是官網,官網的burp有兩種版本,一個社群版一個專業版(pro),pro的功能更加強大當然也需要付費,具體費用是199還是299刀一年來著
另一種方式便是網上找資源(懂得都懂),不過有財力的小夥伴還是建議支援一下正版(反正我窮(狗頭))具體的下載和破解方式網上有很多很多詳細的教程,這裡不再贅述

sqlmap

別問,問就是sql注入神器,用過的都說好!
(這真不是忽悠,曾經精通sqlmap的人在src上僅僅用這個工具挖洞得到了6萬獎金)

sqlmap是一款開源的滲透測試工具,可以自動檢測並利用sql注入漏洞,配備有十分強大的檢測引擎。

條件:預裝python環境,官網下載即可
下載地址:官網即可 sqlmap是開源的不會收費 但是網上的其他版本可能會留有後門,保險起見官網下載,地址在下面
連結: link.

關於具體安裝與環境配置,網上也有很多教程,不再贅述。

(這裡多插一嘴,做sql注入不能過度依賴sqlmap,有一些比較隱蔽的報錯、回顯注入檢測不出來還是需要手動注入的,應當在掌握理論知識的同時結合工具的使用)

kali linux

別問,問就是滲透測試神器,用過的都說好!
(俗話說,kali學得好,牢飯吃得早)
linux系統無論是在操作指令方面還是程式編寫方面都有著不俗的效率,因此每位ctfer都應該有一套自己的linux虛擬機器,debian,ubuntu都是不錯的選擇,但是對於web選手而言,我著重推薦kali,因為kali內建了一套十分完整的滲透工具,包括我們先前提到的sqlmap,burp社群版,nmap,wireshark等等,一鍵整合,方便快捷!

條件:vmware kali映象檔案(.iso)
簡單說,vmware是一個提供虛擬機器安裝測試環境的軟體,而映象檔案就相當於你要安裝的系統,將映象檔案安裝並配置到vm中就得到了一臺虛擬機器

教程,網上有很多詳細的,不再多說

以上三款工具,如果實在有小夥伴的安裝與配置出現問題一直無法解決,歡迎與我聯絡

web整體框架

web安全方向的題都有哪些型別呢?簡單拉個框架介紹一下

  • web
    • sql注入
      • 回顯注入
      • 報錯注入
      • 盲注
    • xss跨站指令碼攻擊
      • 反射型
      • 儲存型
      • DOM
    • csrf跨站請求偽造
    • 檔案相關
      • 檔案包含漏洞
      • 檔案上傳
      • 檔案下載
    • php相關
      • php反序列化
      • XXE
      • SSRF
    • 其他
      • 暴力破解
      • url重定向

簡述具體內容

後續會持續完善

一些例題的思路與知識擴充

後續會持續完善

篇幅實在有限,就不對具體知識進行講解了,不過儘量把wp寫詳細一些

get傳參與正規表示式

JLUCTF 2020 熱身賽 在這裡插入圖片描述
首先簡單看一下程式碼,得到兩個資訊,首先s的傳入方式是get型,其次這段程式碼實際上是對pattern與subject進行匹配,匹配成功輸出flag。而pattern看格式/^…$ /明顯是正規表示式,也就是說當subject符合正則pattern的要求的時候,就會輸出flag。
分析一下正則的幾個位置:
\s 空白字元
\d 數字
{2,3} 大括號內表示長度,即2位或3位

\ / 這裡有一點繞 前面的 \ 表示轉義符 簡單做一下說明:有些字元比如 / $ 等,在正則中是有實際意義的引數,同時也可以作為字元,如何區分這兩者呢?約定在字元前面加上一個轉義字元 \ ,以此來表示需要匹配的是字元

所以這個 \ / 的意思是匹配字元 /
[a-z] 任意一個小寫字母
(.+) 匹配括號 ()

^ 為開始標誌 $ 為結束標誌

因此需要在字串
theflag1之間需要加入 空格 2-3位數字 / 任意字母 / () 並且將位置對應
而get傳參的基本方式就是在url後面加 /?id=

因此這道題的payload為 /?s=the flag234/a/()1

知識擴充:

1.get與post 兩種傳參方式 建議百度或csdn
2.正規表示式 建議看菜鳥教程

重定向

JLUCTF 2020 熱身賽
在這裡插入圖片描述
重定向本質上是網頁之間的跳轉

hint 說這是一個重定向的題目 開啟連結看一下 url最後一級檔案目錄是index.php 頁面中還有一個2.php的入口,一直點選下一個頁面中的入口,發現在4.php下,入口的名字是5.php,而我們實際上回到了index.php。這也就意味著從index到4通過頁面跳轉 回到了index 從而在index與4之間形成了一個閉環,從而將5隱藏起來。所以我們有理由懷疑5.php中有我們想要的flag

這是隻要不讓網頁進行重定向就可以了 我們開啟kali 在終端使用curl指令連結到5.php curl預設是不支援重定向的,除非有-L的引數。

果然,在5.php中得到了flag

知識擴充:

  1. linux指令 建議搜尋 linux指令集
  2. 重定向 csdn有很多部落格 講的很不錯

相關文章