HTTP協議基礎
HTTP:HyperText Transfer Protocol,超文本傳輸協議
1.協議特點:
- 簡單快速,請求方式get post head等8中請求方式
- 無連接(一次請求就斷開)無狀態(沒有記憶功能,不會記錄任何信息)
2.支持的模式:B/S、C/S(websocket進行通信)
BurpSuite,滲透測試神器,使用Java開發,功能齊全,方便滲透測試人員去測試Web站點
功能:爬蟲、掃描、攔包
HTTP協議特點:
簡單快速,請求方式有get、post、head 等8種
無連接無狀態
支持模式有 B/S(瀏覽器) C/S(通過websocket去通信)
URL,統一資源定位符,在網絡中用來標識某處的資源
http(協議)://www.baidu.com(域名):8080(端口)/news(虛擬目錄)/index.php
(文件名部分)?parameter=deal&id=35&do=add(三個參數,?開始,用&連接)#name(錨部分)
請求包:request=請求行+請求頭+空行+請求數據
請求方式:
http1.0: GET POST HEAD
http1.1:GET POST HEAD OPTIONS PUT DELETE TRACK CONNECT
GET /test.html?name=qwe&passwd=asd&submit=submit HTTP/1.1 請求行 (請求方式+url+協議以及版本)
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/test.html?name=qwe&passwd=asd&submit=submit
DNT: 1 上述請求頭
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 23 Sep 2019 01:43:40 GMT
If-None-Match: "116-5932e8c9787e8"
空行
請求數據(GET沒有,POST有)
BurpSuite:
爬蟲、掃描(dashboard)
攔包(proxy)
重放(repeater)
爆破(intruder)
解碼和編碼(decoder)
比較(comparer)
打開方式:雙擊或者在dos里面打開
GET和POST請求方式比較:
相同點:
1、GET和POST都可以創建數組,array,其包含了鍵值對(key=value),
其中鍵是表單控件的名稱,值是用戶輸入的數據
2、GET和POST被視為$_GET和$_POST,是超全局變量
不同點
1、GET型方式將用戶發送的數據拼接到URL中,發送到數據量較小,不安全
2、POST型方式參數放在請求包中的請求數據中,必須使用工具去查看,
發送的數據量較大,安全性較高
請求包中每個請求頭中參數的含義
HOST (表示請求的服務器的IP)
User-Agent(表示用戶本地環境)
Accept(瀏覽器可解析的應用環境)
Accept-Language(瀏覽器可解析的語言類型)
Accept-Encoding(瀏覽器可解析的編碼方式)
Referer(表示請求頁面是從哪里來的********)
Cookie(表示服務器和瀏覽器之間的會話狀態,該會話狀態可以表示用戶是否
登陸過,一般都是服務器給配置,具有時效性。只要失效,就需要用戶重新登陸。
只有登陸成功之后,瀏覽器就會保存Cookie,每次去服務器請求都會帶上cookie,
並且該cookie是需要在服務器中去驗證。)
X-forwarded-for(表示用戶的真實ID)
Conent-Type (內容類型,表示該請求數據的類型)
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://www.baidu.com/
Cookie: BAIDUID=2E9FEFD30D878F71EFFAF2220402EC40:FG=1; BIDUPSID=2E9FEFD30D878F71EFFAF2220402EC40; PSTM=1569129383; delPer=0; BD_HOME=0; H_PS_PSSID=1453_21098_29523_29721_29567_29220
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
HTTP的相應包
用戶發送的請求包到達服務器之后,要去處理該請求,把處理之后的結果發送給
用戶的瀏覽器,我們將該結果稱為相應包,response
Response=狀態行+消息報頭+空行+響應的正文
使用BP攔截相應包
先去設置瀏覽器中代理,再去設置BP中代理監聽器,並勾選Intercept Server Rserponses
再攔截到數據包之后,點擊Forward,就能看到相應包
HTTP/1.1 200 OK 狀態行
Date: Mon, 23 Sep 2019 03:09:02 GMT 服務器響應時間
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a 服務器環境
Last-Modified: Mon, 23 Sep 2019 01:43:40 GMT
ETag: "116-5932e8c9787e8"
Accept-Ranges: bytes
Content-Length: 278 返回數據包長度
Connection: close 連接狀態
Content-Type: text/html 返回響應數據的類型,告訴瀏覽器該使用哪種方式去解析或者打開該響應數據類型
Location:index.php 表示要跳轉的哪的頁面
Set-cookie: 表示服務器給瀏覽器設置的cookie的值
狀態碼,由三位數字組成,第一位數字表示了響應的類型,共有五種類型
1XX:表示服務器已經接收到請求,並且需要繼續處理
2XX:表示服務器已經成功接收請求,並處理了該請求
3XX:表示重定向,URL要跳轉到其他頁面去請求
4XX:表示用戶請求有問題
5XX:表示服務器內部出錯
常見狀態碼:200 302 304 400 403 404 500
200 請求成功
302 臨時移動。與301類似。但資源知識臨時被移動,客戶端應繼續使用原有URL
304 未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端
通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期后修改的資源
400 客戶端請求的語法錯誤,服務器無法理解
403 服務器理解請求客戶端的請求,但是拒絕執行此請求
404 請求的資源(網頁等)不存在
500 內部服務器錯誤
響應頭中每個參數的含義:
Date(服務器響應時間)
Server(服務器環境)
Conten-Length(返回數據包長度)
Connection(連接狀態)
Conent-Type(返回響應數據的類型,告訴瀏覽器該用哪一種方式去解析或者打開該響應數據類型)
Location (表示要跳轉到那個頁面中)
Set-cookie(表示服務器給瀏覽器設置的cookie的值)