前兩篇文章都是基于目标系統允許union,order by語句
并且可以讀取infomation_schema中繼資料庫
如果遇到的是安全方面做得很好的應用,進行了權限限制,那麼我們有什麼辦法呢?
猜測目前表的列名(字段名):
' and [猜測字段名] is null --
如果結果是:Unknown column '[猜測字段名]' in 'where clause'
說明這個字段不存在
如果結果是沒有反應,則證明該字段存在:
比如:' and user is null --
于是我就想到了:是否可以對字段名進行爆破,我從kali中搜尋下有沒有相關的字典:

我随便選用一個字典,當我檢視其中内容時候發現有些是#開頭的
實際中,應該把這些#開頭的過濾掉,因為可能會影響結果
現在的column.txt應該就是我們需要的字典
利用Burp的Intruder:設定變量
然後加載剛才的字典:
不需要對payload編碼:
然後就可以開始了:
通過觀察發現,長度為4000多的傳回正常的頁面
進一步排序,就可以發現具體的字段名:
類似地,我們也可以猜測目前表的表名:
' and [猜測表名].user is null --
為什麼是.user呢?因為上邊已經成功猜測到了user字段名
如果這個表不存在,那麼這個列也不會存在,于是可以猜測表名:
錯誤情況:
正确情況:什麼都不會傳回
找到字典進行爆破
成功爆破出users表
類似的思路:可以繼續加入:' and [猜測資料庫名].[猜測表名].user is null --
就可以猜測出目前資料庫名稱了
如何猜測目前資料庫其他表的表名?
' and (select count(*) from [表名])>0 --
意外收獲:庫名直接出來了
接下來類似上邊的方法,進行爆破
成功猜出guestbook表和users表
繼續猜測表中的資訊:
‘ or [字段名]='[猜測值]
通過上面的步驟已經成功猜到字段名user了
猜測正确是上面的結果,說明存在user為admin的使用者
猜測錯誤的話:什麼都不會傳回
這種無腦猜測不太有智慧,我們可以結合其他的語句,比如:
' or user like '%a%
這一句話猜測的是:隻要資料庫中有user包含字元a的,全部查出來
成功,查到了兩個使用者
知道使用者後就可以進一步猜測密碼:URL編碼後結果如下
'%20or%20user%3d'admin'%20and%20password%3d'5f4dcc3b5aa765d61d8327deb882cf99
(我對猜測的密碼進行了MD5加密)
轉載于:https://www.cnblogs.com/xuyiqing/p/10362850.html