基於Http Header的SQL注入

通常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的消息結構。服務器以一個狀態行作爲響應,相應的內容包括消息協議的版本,成功或者錯誤編碼加上包含服務器信息、實體 元信息以及可能的實體內容。

 
轉載請註明出自: FreebuF.COM - http://www.freebuf.com/articles/4588.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章