1. 程式人生 > 資料庫 >初學Web安全之sql注入(四)—— 盲注(1)

初學Web安全之sql注入(四)—— 盲注(1)

盲注

當你的輸入沒有回顯,也沒有報錯的時候,但是輸入正確和錯誤的值時,頁面有不同表現時,這時候我們可以嘗試使用布林盲注


布林盲注

拿sqli-labs第八關來舉列

首先輸入id=1,頁面顯示如下:

在這裡插入圖片描述
輸入id=1’,頁面出現不同結果,判斷有閉合:

在這裡插入圖片描述

再次輸入id=1",頁面結果顯示正常,初步判斷語句閉合為單引號閉合:

在這裡插入圖片描述


接下來,我們就可以先嚐試判斷當前資料庫的長度,然後再拆解表名,但是這裡省略這一步,直接判斷當前資料庫有多少個表,構造語句開始嘗試:

PS:因為手工注入非常的耗費時間,所以我這裡採用半自動化,也就是利用burpsuit的爆破功能,如果採用純手工的話,語句建議採用>號,然後使用二分法縮減數字,這樣效率較高

在這裡插入圖片描述

這裡開啟burpsuit,啟用攔截功能,注意瀏覽器要切換到8080埠,這裡我是用了火狐自帶的外掛切換埠,將攔截到的包傳送到如下板塊,開始暴力破解:

在這裡插入圖片描述

得出結果為4:

在這裡插入圖片描述

在頁面中測試,結果正確:

在這裡插入圖片描述

得出了表的數量,接下來開始猜測每個表長度,同樣藉助burpsuit:

構造語句:

在這裡插入圖片描述

burpsuit暴力破解:

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

得出了有多少個表,表的長度為多少,接下來,我們就可以開始猜解表名了,這裡需要用到兩個函式,詳細解釋可以自行百度:

ascii:返回字元的ascii值
substr:擷取字元作用


先構造語句:

在這裡插入圖片描述

藉助burpsuit逐步猜解每個表名:

第一個表,前面已經得知長度為6,接下來就是猜測每個資料,因為這裡是在靶場,所以我的範圍只設置為小寫字母,也就是97~122,實戰中,有可能會出現某些字元和大小寫,這裡為了節約時間,就只假設為小寫字母,利用burp破解得出,對照ascii碼錶,得出結果為:emails

在這裡插入圖片描述

第二個表,長度為8:

在這裡插入圖片描述

得出結果:referers

在這裡插入圖片描述

第三個表,長度為7,利用burpsuit得出結果:uagents

在這裡插入圖片描述

第四個表,長度為5,得出結果為:users

在這裡插入圖片描述

猜解完表名,可以發現,關鍵表應該是users,那麼接下來應該就是猜解關鍵欄位了,先判斷欄位數:

構造語句:

在這裡插入圖片描述

藉助burpsuit,得出欄位數為3:

在這裡插入圖片描述

接下來,判斷每個欄位的長度:

構造語句:

在這裡插入圖片描述

藉助burpsuit得出結果,第一個欄位長度為2,第二個和第三個長度為8:

在這裡插入圖片描述


接下來,就是猜解每個欄位數了,步驟和前面都差不多:

構造語句:

在這裡插入圖片描述

藉助burpsuit得出結果為id:

在這裡插入圖片描述

第二個欄位:

結果為username

在這裡插入圖片描述

第三個欄位,結果為password

在這裡插入圖片描述


判斷出關鍵列為username和password,接下來就是獲取賬號密碼了,通常管理員賬號密碼都是在第一個:

構造語句,獲取第一個username的長度:

在這裡插入圖片描述

在這裡插入圖片描述

猜解名字:

在這裡插入圖片描述

PS:注意,實戰中賬號密碼可能是數字大小寫字母和符號組成,因為這裡是在靶場,所以使用的還是數字破解,得出結果為Dumb:

在這裡插入圖片描述

接下來就是對password的猜解了,這裡就直接上圖片演示:

長度為4:

在這裡插入圖片描述

破解出密碼也為Dumb:

在這裡插入圖片描述


到這裡,布林盲注就完成了,上面的步驟是藉助了工具,純手工的話,可以用>號,再借助二分法縮減數字,這樣效率較高,也可以慢慢猜解出來。