天天看點

Kali學習筆記41:SQL手工注入(3)

前兩篇文章都是基于目标系統允許union,order by語句

并且可以讀取infomation_schema中繼資料庫

如果遇到的是安全方面做得很好的應用,進行了權限限制,那麼我們有什麼辦法呢?

猜測目前表的列名(字段名):

' and [猜測字段名] is null -- 

如果結果是:Unknown column '[猜測字段名]' in 'where clause'

說明這個字段不存在

如果結果是沒有反應,則證明該字段存在:

比如:' and user is null -- 

于是我就想到了:是否可以對字段名進行爆破,我從kali中搜尋下有沒有相關的字典:

Kali學習筆記41:SQL手工注入(3)

我随便選用一個字典,當我檢視其中内容時候發現有些是#開頭的

實際中,應該把這些#開頭的過濾掉,因為可能會影響結果

Kali學習筆記41:SQL手工注入(3)

現在的column.txt應該就是我們需要的字典

利用Burp的Intruder:設定變量

Kali學習筆記41:SQL手工注入(3)

然後加載剛才的字典:

Kali學習筆記41:SQL手工注入(3)

不需要對payload編碼:

Kali學習筆記41:SQL手工注入(3)

然後就可以開始了:

Kali學習筆記41:SQL手工注入(3)

通過觀察發現,長度為4000多的傳回正常的頁面

進一步排序,就可以發現具體的字段名:

Kali學習筆記41:SQL手工注入(3)

類似地,我們也可以猜測目前表的表名:

' and [猜測表名].user is null -- 

為什麼是.user呢?因為上邊已經成功猜測到了user字段名

如果這個表不存在,那麼這個列也不會存在,于是可以猜測表名:

錯誤情況:

Kali學習筆記41:SQL手工注入(3)

正确情況:什麼都不會傳回

找到字典進行爆破

Kali學習筆記41:SQL手工注入(3)
Kali學習筆記41:SQL手工注入(3)
Kali學習筆記41:SQL手工注入(3)

成功爆破出users表

類似的思路:可以繼續加入:' and [猜測資料庫名].[猜測表名].user is null -- 

就可以猜測出目前資料庫名稱了

如何猜測目前資料庫其他表的表名?

' and (select count(*) from [表名])>0 -- 

Kali學習筆記41:SQL手工注入(3)

意外收獲:庫名直接出來了

接下來類似上邊的方法,進行爆破

Kali學習筆記41:SQL手工注入(3)

成功猜出guestbook表和users表

繼續猜測表中的資訊:

‘ or [字段名]='[猜測值]

Kali學習筆記41:SQL手工注入(3)

通過上面的步驟已經成功猜到字段名user了

猜測正确是上面的結果,說明存在user為admin的使用者

猜測錯誤的話:什麼都不會傳回

這種無腦猜測不太有智慧,我們可以結合其他的語句,比如:

 ' or user like '%a%

這一句話猜測的是:隻要資料庫中有user包含字元a的,全部查出來

Kali學習筆記41:SQL手工注入(3)

成功,查到了兩個使用者

知道使用者後就可以進一步猜測密碼:URL編碼後結果如下

'%20or%20user%3d'admin'%20and%20password%3d'5f4dcc3b5aa765d61d8327deb882cf99

(我對猜測的密碼進行了MD5加密)

轉載于:https://www.cnblogs.com/xuyiqing/p/10362850.html