滲透測試基礎之http協議基礎

目錄

 

前言

正文

http的工作流程(快速理解)

關於url的構成

HTTP請求包與返回包

請求包:

返回包:

常見的header:


前言

我又來了,更新速度有點快,莫得辦法,賊無聊~~~

想不出騷話了,略過~~~~

 

正文

http的工作流程(快速理解)

什麼是客戶端?

客戶端可以理解成用戶  指瀏覽器

什麼是服務端?

服務端可以理解成商店   指服務器

一個http工作流程

可以看成  “用戶到商店需要買蘋果。然後服務員去拿蘋果給用戶 “ 簡簡單單一句話

用戶到商店買蘋果      這是一個請求

服務員把蘋果給用戶   這是一個迴響

理解的話就已經完全理解了

這就是一個http工作流程,分請求包迴響包(一般都叫返回包)

 

(1)客戶端連接到Web服務器

(2)發送HTTP請求

(3)服務器接受請求並返回HTTP響應

(4)釋放連接TCP連接

(5)客戶端瀏覽器解析HTML內容

 

關於url的構成

http://www.test.com/aboutus.php?id=117   (這個url是我找的,然後我改成www.test.com)

http://                        首先是http協議(protocol)

www.test.com           然後就是主機(host)

aboutus.php              然後再路徑(path)

?id=117                     然後就是參數

路徑就是host後面的部分

HTTP請求包與返回包

HTTP/1.1 定義的請求方法有8種:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE

GET:              是最常用的方法,通常用於請求服務器發送某個資源

PUT:              用於向服務端寫入文檔

POST:            是常用的方法之一,用於向服務端提交數據,有主體

HEAD:           與GET類似,但在響應中只有首部,不返回具體數據,可以用來查看資源是否存在

TRACE:         用於跟蹤某個請求

DELETE:       用於刪除服務端某個資源

OPTIONS:     用於查詢服務端支持的方法

請求包:

​
​
請求行: POST /users/login/ HTTP/1.1
請求頭:	Host: xxxxxxxx.net
		User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
		Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
		Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
		Accept-Encoding: gzip, deflate
		Content-Type: application/x-www-form-urlencoded
		Content-Length: 250
		Origin: http://XXXXXX.net
		Connection: close
		Referer: http://XXXXXXX.net/users/login/?next=/courses/
		Cookie: csrftoken=7nHRuim6Ost14JzABrAy38lb7ZW2PmU5d1LIX99pafrq1MVsTo2APP55duHAj0K8
		Upgrade-Insecure-Requests: 1
空行
請求體: csrfmiddlewaretoken=SIQUCuyvhyOpOdwDVVYTyBP0EMtLsf6sYmUL5llODlMOLgSvdSqVkizUKhejWTWv&opt_type=account&redirect_url=%2Fcourses%2F&account=aaaaaa&password=aaaaaa&mobile=&captcha_0=9215a8da15a3412e58477a0a0f1dd748d9211041&captcha_1=aaaaaaaa&mobile_code=

​

​

請求包分個部分,請求行,請求頭,請求體

請求行: POST /users/login/ HTTP/1.1   

傳參方式post,然後路徑/users/login/,協議是http 1.1

然後請求頭,我下面貼出了常見head解釋

關於head可以進行head頭注入

然後再請求體,有些表單,或者登陸框登陸的時候用戶名和密碼都會在這裏

爆破的時候也是在這爆破

 

返回包:

 

HTTP/1.1 200 OK
Server: openresty/1.13.6.2
Date: Fri, 07 Feb 2020 16:00:11 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
Vary: Cookie
Set-Cookie: csrftoken=7nHRuim6Ost14JzABrAy38lb7ZW2PmU5d1LIX99pafrq1MVsTo2APP55duHAj0K8; expires=Fri, 05-Feb-2021 16:00:11 GMT; Max-Age=31449600; Path=/
Content-Length: 600



    <head>
        <meta charset="UTF-8">
        <meta name="renderer" content="webkit">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" >
        <title>ç»å½ | 红æ¥å®å¨</title>
        <link rel="stylesheet" type="text/css" href="/static/css/reset.css">
        <link rel="stylesheet" type="text/css" href="/static/css/commons.css">
        <link rel="stylesheet" type="text/css" href="/static/js/plugins/toastr-2.1.1/toastr.min.css" />
        <style type="text/css">
            div.hd-login {
                background-image: url('/sssssssso/logo_200_100.jpg');
            }
        </style>
    </head>

返回包先是協議,然後狀態碼,是否正常

然後一些head等等

下面的html就是跳轉返回的頁面,只不過太多了,我就刪掉了好多,這樣看着好看,比較明顯

狀態碼分爲五大類:

信息性狀態碼:100~199

成功狀態碼:200~299

重定向狀態碼:300~399

客戶端錯誤狀態碼:400~499

服務端錯誤狀態碼:500~599

常見的header:

Content-Type

請求體/響應體的類型,如:text/plain、application/json

Accept

說明接收的類型,可以多個值,用,(半角逗號)分開

Content-Length

請求體/響應體的長度,單位字節

Content-Encoding

 

請求體/響應體的編碼格式,如gzip,deflate

 

Accept-Encoding

 

告知對方我方接受的Content-Encoding

 

ETag

給當前資源的標識,和Last-Modified、If-None-Match、If-Modified-Since配合,用於緩存控制

Cache-Control

取值爲一般爲no-cache或max-age=XX,XX爲個整數,表示該資源緩存有效期(秒)

Authorization

 

用於設置身份認證信息

 

User-Agent

 

用戶標識,如:OS和瀏覽器的類型和版本

 

If-Modified-Since

 

值爲上一次服務器返回的 Last-Modified 值,用於確認某個資源是否被更改過,沒有更改過(304)就從緩存中讀取

 

If-None-Match

值爲上一次服務器返回的 ETag 值,一般會和If-Modified-Since一起出現

Cookie

已有的Cookie

Referer

表示請求引用自哪個地址,比如你從頁面A跳轉到頁面B時,值爲頁面A的地址

Host

 

請求的主機和端口號

 

Date

服務器的日期

Last-Modified

該資源最後被修改時間

Transfer-Encoding

取值爲一般爲chunked,出現在Content-Length不能確定的情況下,表示服務器不知道響應版體的數據大小,一般同時還會出現Content-Encoding響應頭

Set-Cookie

設置Cookie

Location

重定向到另一個URL,如輸入瀏覽器就輸入baidu.com回車,會自動跳到 https://www.baidu.com ,就是通過這個響應頭控制的

Server

服務器應用程序軟件的名稱和版本

 

接下來就差不多了,就可以理解啦

文末:

歡迎加我微信,一起討論問題。技術有限,根據網上,以及自己理解寫的

如果有什麼不對的話可以評論指出來

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章