一、HTTP協議基礎
HTTP:HyperText Transfer Protocol,超文本傳輸協議
1.協議特點:
- 簡單快速,請求方式get post head等8中請求方式
- 無連接(一次請求就斷開)無狀態(沒有記憶功能,不會記錄任何信息)
2.支持的模式:B/S、C/S(websocket進行通信)
二、HTTP的請求包
1.請求包格式:request=請求行(請求方式 URL 協議/版本)+請求頭(形勢都為ket:value)+空行+請求數據(若此處為空,請求包的請求方式為get,數據存放在URL中,若有數據,則說明該請求方式為post)
2.請求方式:
- http1.0版本: GET POST HEAD
- http1.1版本: GET POST HEAD OPTIONS DELETE TRACE CONNECT PUT PATCH
方法 | 描述 |
GET | 請求指定的頁面信息,並返回實體主體 |
POST | 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。 數據被包含在請求體中。POST 請求可能會導致新的資源的建立和或已有資源的修改 |
HEAD | 類似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 |
OPTIONS | 允許客戶端查看服務器的性能 |
DELETE | 請求服務器刪除指定的頁面 |
TRACE | 回顯服務器收到的請求,主要用於測試或診斷 |
CONNECT | HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理服務器 |
PUT | 從客戶端向服務器傳送的數據取代指定的文檔的內容 |
PATCH | 是對 PUT 方法的補充,用來對已知資源進行局部更新 |
(表格來源:https://www.runoob.com/http/http-methods.html,感謝!)
- GET和POST請求方式的比較:
相同點:
-
- 都可以創建數組array,數組包含鍵值對(key=value),其中的鍵為表單控件的名稱,值為用戶輸入的數據
- 分別被視為$_GET和$_POST,是超全局變量
不同點:
-
- GET型方式:將用戶發送的數據拼接到URL中,並且發送的數據量較小,不安全
- POST型方式:參數放在請求包中的請求數據中,查看必須使用工具查看,發送的數據量較大,安全性較高
三、HTTP的響應包
響應包:用戶發送的請求包達到服務器后,要去處理該請求,把處理之后的結果發送給用戶瀏覽器,我們將該結果稱為響應包,用response表示
1.響應包格式:response=狀態行(協議/版本 狀態碼)+消息報頭+空行+響應正文(也叫做響應內容,是由HTML+CSS+JS組成的響應正文)
2.狀態碼
- 狀態碼由三位數字組成,第一位數字表示響應的類型,共有5種類型:
1xx:表示服務器已經接受到請求並且需要繼續處理
2xx:表示服務器已經成功接受到請求,並處理了該請求
3xx:表示重定向,URL要跳轉到其他頁面去請求
4xx:表示用戶請求由問題
5xx:表示服務器內部出錯
3.常見狀態碼:
- 200 OK
表示請求被服務器正常處理
- 302 Found
臨時重定向,表示請求的資源臨時搬到了其他位置
- 304 Not Modified
表示客戶端發送附帶條件的請求時,條件不滿足
- 400 Bad Request
表示請求報文存在語法錯誤或參數錯誤,服務器不理解
- 403 Forbidden
表示對請求資源的訪問被服務器拒絕了
- 404 Not Found
表示服務器找不到你請求的資源
- 500 Internal Server Error
表示服務器執行請求的時候出錯了
四、URL
URL:uniform resource locator,統一資源定位系統,在網絡中用來表示某處的資源
- URL格式:
http(協議)://www.baidu.com(域名):8080(端口)/news(虛擬目錄)/index.php(文件名部分)?parameter=deal&id=35(參數)#name(錨部分)
- parameter=deal&id=35兩個參數
- 參數從?后面開始的,第一個參數和第二個參數之間用&連接
五、JDK
JDK:Java的軟件開發工具包,方便我們在本地運行Java開發的工具
1.下載JDK時要復制安裝JDK的路徑
2.配置環境變量
- win7 配置環境變量:
右擊計算機-->屬性-->高級系統設置-->高級-->環境變量-->系統變量-->path,雙擊進入,在變量值中最后添加;加上安裝JDK的路徑-->確定
- win10 配置環境變量:
右擊計算機-->屬性-->高級系統設置-->高級-->環境變量-->系統變量-->path,雙擊進入,在最后的空白行中直接輸入JDK的安裝路徑
驗證:在doc命令窗口中輸入 java -version 回顯下圖信息,表示配置環境變量成功
六、BurpSuite
BurpSuite:多功能滲透測試工具,滲透測試神器,使用JAVA開發,功能齊全,方便滲透測試人員去測試WEB站點
- 功能:爬蟲、掃描、攔包、重發、爆破、解碼和編碼、比較等等
七、使用BP(BurpSuite的簡稱)攔截數據包
1.下載JDK,配置環境變量(上面有詳細步驟)
2.下載一個火狐瀏覽器,並打開,找到foxyproxy,右擊,設置代理服務器,設置過程如下圖所示
- 代理服務器:代理網絡用戶去取得網絡信息。形象地說,它是網絡信息的中轉站,是個人網絡和Internet服務商之間的中間代理機構,負責轉發合法的網絡信息,對轉發進行控制和登記
- 過程如圖所示:
3.打開BP,點擊Proxy --> Options配置,進入一下界面,可以看到BP默認監聽8080端口
- Proxy是BurpSuite最核心的部分,通過攔截,查看和修改所有的請求和響應您的瀏覽器與目標Web服務器之間傳遞
4.點擊Intercept截斷 --> 關閉攔截狀態Intercept is off(默認開啟攔截狀態)
- 這里若開啟攔截,瀏覽網頁時將請求包攔截,就無法得到服務器的響應,從而瀏覽不到界面
5.打開phpStudy,啟動Apache2、FTP、MySQL
6.在phpstudy_pro/www/中,刪掉文件info.php,新建index.html
7.打開火狐瀏覽器,右鍵foxyproxy開啟代理服務器(或點擊foxyproxy,在選擇工作模式中修改),狐狸頭變藍,在地址欄中輸入127.0.0.1
8.打開BP,開啟攔截狀態Intercept is on,等待或者刷新火狐瀏覽器界面,可以看到如圖所示界面
- 這里可以看到,請求方式為GET
9.打開BP,關閉攔截狀態,打開火狐瀏覽器,瀏覽任意網站
- 關閉BP,抓取其他請求包,但是在瀏覽網站時會出現以下界面
- 點擊高級,發現下面沒有添加例外,換個網站
- 添加例外后,就能訪問了
10.抓取POST包,就要向指定資源提交表單或者上傳文件,在發起請求之前,打開BP,開啟攔截狀態后,發起請求,BP就可以攔截到POST包
11.攔截響應包時,要將截斷服務器響應的選項勾選,如下圖所示
12.在攔截到POST請求包時,點擊Forward發送,就可以查看到響應包
六、數據頭中每個參數的含義
1.請求頭中每個參數的含義:
參數 | 含義 |
Host |
表示請求服務器的IP |
User_Agent |
表示用戶本地環境(工具環境) |
Accept |
瀏覽器可解析的應用環境 |
Accept-Language |
瀏覽器可解析的語言類型 |
Accept-Encoding | 瀏覽器可解析的編碼方式 |
Referer | 表示請求頁面是從哪里來的(當前所處位置) |
Cookie | 表示服務器和瀏覽器之間的會話狀態, 該會話狀態可以表示用戶是否登陸過, 一般都是服務器給配置的,具有時效性。 cookie失效,就需要用戶重新登錄, 只有登錄成功之后,瀏覽器就會保存cookie, 每次去服務器去請求都會帶上cookie, 並且該cookie是需要在服務器中驗證的 |
X-Forwarded-For | 表示用戶真實的IP |
Content-Type | 內容類型,表示該請求數據的類型 |
2.響應頭中每個參數的含義:
參數 | 含義 |
Data |
服務器發出響應的時間 |
Server |
服務器的環境(如:fcgid表示Apache版本) |
Content-Length |
返回來數據包的長度 |
Connection | 連接狀態 |
Content-Type | 返回響應數據的類型,告訴瀏覽器該使用哪種 方式去解析或打開該響應數據的內容 |
Location |
表示要跳轉到哪個頁面中 |
Set-Cookie |
表示服務器給瀏覽器設置cookie的值 |