今天給大家講解的是SQL注入中的http請求頭注入,這種注入方式平時用的非常多,上次看別人面試時遇到了,就再來深究一下,研究其中的原理,利用方式等等
一、HTTP請求頭
1、HTTP介紹
HTTP,超文本傳輸協議)是訪問萬維網使用的核心通信協議,也是今天所有Web應用程序使用的通信協議。最初,HTTP只是一個為獲取基于文本的靜態資源而開發的簡單協議,后來人們以各種形式擴展和利用它。使其能夠支持如今常見的復雜分布式應用程序。
HTTP使用一種用于消息的模型:客戶端送出一條請求消息,而后由服務器返回一條響應消息。該協議基本上不需要連接,雖然HTTP使用有狀態的TCP協議作為它的傳輸機制,但每次請求與響應交換都會自動完成,并且可能使用不同的TCP連接。
TCP就是一種傳輸協議,就像HTTP協議一樣,HTTP的目的是指定了客戶端可能發送給服務器什么樣的消息以及得到什么樣的響應,而TCP的目的是為了確保數據傳輸的可靠性,我給你一個數據包,你一定就要收到,收不到的話那么我就會給你重發,直到我超時放棄你了。
HTTP是建立在TCP之上的,當你建立起TCP連接之后,在上面傳輸的數據用的是HTTP協議
2、HTTP請求頭介紹
所有HTTP消息(請求與響應)中都包含一個或幾個單行顯示的消息頭(header),然后是一個強制空白行,最后是消息主體(可選)。以下是一個典型的HTTP請求:
3、請求方式
GET就是請求方式,那么請求方式有很多種
4、消息頭介紹
GET后面的/代表路徑,HTTP/1.1代表HTTP的版本。
HOST表示請求的服務器網址
Connection表示持久的客戶端與服務連接
Cache-Control表示緩存開關
sec-ch-ua可以理解用來替代user-agent的,用sec-ch-ua可以防止泄露瀏覽器詳細信息
sec-ch-ua-mobile表示瀏覽器名稱和版本
sec-ch-ua-platform表示操作系統名稱
Upgrade-Insecure-Requests 請求頭向服務器發送一個客戶端對HTTPS加密和認證響應良好,在https頁面中,如果調用了http資源,那么瀏覽器就會拋出一些錯誤。為了改變成這一狀況,chrome(谷歌瀏覽器)會在http請求中加入 ‘Upgrade-Insecure-Requests: 1’ ,服務器收到請求后會返回 “Content-Security-Policy: upgrade-insecure-requests” 頭,告訴瀏覽器,可以把所屬本站的所有 http 連接升級為 https 連接。
User-Agent表示發出請求的用戶信息
Accept表示指定客戶端能夠接收的內容類型
Sec-Fetch-Site表示一個請求發起者的來源與目標資源來源之間的關系
Sec-Fetch-Mode該請求頭表明了一個請求的模式
Sec-Fetch-Dest表示請求的目的地,即如何使用獲取的數據
Sec-Fetch-User取值是一個Boolean類型的值,true(?1)表示導航請求由用戶激活觸發(鼠標點擊/鍵盤),false(?0)表示導航請求由用戶激活以外的原因觸發
Accept-Encoding指定瀏覽器可以支持的web服務器返回內容壓縮編碼類型。
Accept-Language瀏覽器可接受的語言
Cookie 就是一段字符串,是瀏覽器保存服務器返回數據的方法,通常保存用戶身份信息
X-Requested-With用于判斷客戶端請求是那種請求
referrer是HTTP請求header的報文頭,用于指明當前流量的來源參考頁面。通過這個信息,我們可以知道訪客是怎么來到當前頁面的。
5、HTTP響應
HTTP響應是什么意思,當我們從瀏覽器發出請求的時候,服務器接收到請求,會給客戶端進行響應。那么這個響應就是HTTP響應。
那么響應重點就是看第一行和響應的正文,
第一行HTTP/1.1代表的是HTTP的版本 200 是響應碼 OK就代表響應成功
響應示例中的其他一些要點如下:
Server消息頭中包含一個旗標,指明所使用的Web服務器軟件。有時還包括其他信息。如所安裝的模塊和服務器操作系統。其中包含的信息可能并不準確。
Set-Cookie消息頭向瀏覽器發送另一個cookie.它將在隨后向服務器發送的請求中由Cookie消息頭返回。
Pragma消息頭指示瀏覽器不要將響應保存在緩存中。Expires消息頭指出響應內容已經過期。因此不應保存在緩存中。當返回動態內容時常常會發送這些指令,以確保瀏覽器隨時獲得最新內容。
Content-Type消息頭示這個消息主體中包含一個HTML文檔。
Content-Length消息頭規定消息主體的字節長度。
以下圖就是響應正文
二、常見HTTP頭注入
1、UA頭注入
UA頭注入,就是注入HTTP請求頭中的Useragent。那么該怎么進行注入呢。如下這個語句就是一個常見的UA頭注入方式
User-Agent: ‘ and updatexml(1,concat(’~‘,database()),1) and ’
2、Referer注入
Referer:當你訪問一個網站的時候,你的瀏覽器需要告訴服務器你是從哪個地方訪問服務器的。(直接輸入網址或者其他頁面中的鏈接點進來的)。
注入方式如下
Referer: ‘ and updatexml(1,concat(’~‘,database()),1) and ’
3、Cookie注入
Cookie 就是一段字符串,是瀏覽器保存服務器返回數據的方法,通常保存用戶身份信息。是某些網站為了辨別用戶身份,進行Session跟蹤而儲存在用戶本地終端上的數據(通常經過加密),由用戶客戶端計算機暫時或永久保存的信息
session當訪問服務器否個網頁的時候,會在服務器端的內存里開辟一塊內存,這塊內存就叫做session,而這個內存是跟瀏覽器關聯在一起的。這個瀏覽器指的是瀏覽器窗口,或者是瀏覽器的子窗口,意思就是,只允許當前這個session對應的瀏覽器訪問,就算是在同一個機器上新啟的瀏覽器也是無法訪問的。而另外一個瀏覽器也需要記錄session的話,就會再啟一個屬于自己的session。也稱為會話控制。
和上面的語句也差不多
Cookie:user=admin ‘ and updatexml(1,concat(’~‘,database()),1) and ’
原文鏈接:https://blog.csdn.net/qq_63844103/article/details/128625869
-
Web
+關注
關注
2文章
1265瀏覽量
69526 -
網絡安全
+關注
關注
10文章
3175瀏覽量
59911 -
HTTP
+關注
關注
0文章
510瀏覽量
31312 -
SQL
+關注
關注
1文章
767瀏覽量
44174
發布評論請先 登錄
相關推薦
評論