通常HTTP消 息包括客戶機向服務器的請求消息和服務器向客戶機的響應消息。這兩種類型的消息由一個起始行,一個或者多個頭域,一個只是頭域結束的空行和可選的消息體組 成。HTTP的頭域包括通用頭,請求頭,響應頭和實體頭四個部分。每個頭域由一個域名,冒號(:)和域值三部分組成。域名是大小寫無關的,域值前可以添加 任何數量的空格符,頭域可以被擴展爲多行,在每行開始處,使用至少一個空格或製表符。
如下圖:
GET / HTTP/1.1 Connection: Keep-Alive Keep-Alive: 300 Accept:*/* Host: host Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 3.5.30729; .NET4.0E) Cookie: guest_id=v1%3A1328019064; pid=v1%3A1328839311134
如何執行一個HTTP頭的SQL注入?
下載插件cookie管理插件
打開cookie管理器,然後單擊目標網站
編輯目標網站的cookie,來驗證目標網站是否存在http頭的SQL注入,我們編輯變量language_id的字段內容,添加單引號’刷新頁面來判斷。
刷新頁面,判斷是否存在SQL注入漏洞
ok,下載插件tamper-data來修改請求的數據內容。
輸入一個SQL注入語句
如果我們輸入order by 5– ,會報以下錯誤。
所以可以判斷得出用戶表列爲4,再使用cookie管理器,添加以下代碼在language_id字段裏面:
-1+UNION+ALL+SELECT+1,2,3,4
或者輸入下面的語句得到數據庫用戶或版本信息等。
version() user() concat(database()) group_concat
用SqlMap注入起來會更簡單,後續會帶來SqlMap的相關文章 :)
相關閱讀:
HTTP(HyperTextTransferProtocol)是超文本傳輸協議的縮寫,它用於傳送WWW方式的數據,關於HTTP協議的詳細內 容請參考RFC2616。HTTP協議採用了請求/響應模型。客戶端向服務器發送一個請求,請求頭包含請求的方法、URI、協議版本、以及包含請求修飾 符、客戶信息和內容的類似於MIME的消息結構。服務器以一個狀態行作爲響應,相應的內容包括消息協議的版本,成功或者錯誤編碼加上包含服務器信息、實體 元信息以及可能的實體內容。