小心你的WEB應用程序成為數據竊賊的幫兇(5) |
發布時間: 2012/6/11 19:28:50 |
讓盲目攻擊起作用
假設在示例頁面中,我們已經發現了盲目注入,我們希望發現關于表和數據庫設計的細節。請看下面的請求: wangzhan.com/userdetail.asp?username=zhangsan AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtype=0x55),1,1)),0)>65— 如果我們分解一下,會看出這個查詢的結果實際上是一個是或否的回答,“這個表名的第一個字符是一個比65大的ASCII值嗎?”先看最里面的查詢: SELECT TOP 1 name from sysObjects WHERE xtype=0x55 這意味著:獲取來自sysObjects(所有的表)列表最上面的一個名字,其xtype(對象類型)等于ASCII碼0x55(大寫的字母“U”),轉換成用戶(user)表。所以,基本而言,我們獲取了用戶在數據庫中所創建的第一個表。為簡單起見,假設這個表就是“users”: SUBSTRING(users),1,1 現在,我們創建了一個子串,它包含了表名users的首個字符。其值為“u”: ISNULL(ASCII(u),0)>65 在這里我們查看u的ASCII碼值的結果是否大于65,確認表名以字母開頭。如果答案是肯定的,查詢就會被處理。否則,查詢就不會被處理。 使用這種方法,我們可以對每個查詢簡單地增加數字,從而發現首個用戶名的第一個字母。例如,假設我們在大于117時(>117)得到了一個否定的響應,我們知道第一個字母是字母“u”,因為“u”的ASCII值是117。在發現這一點之后,我們可以簡單地改變SUBSTRING參數來選擇第二個字母,然后是第三個字母,等等。 最后,在沒有錯誤代碼時,我們借助于盲目注入就可以發現有漏洞的Web應用程序的數據庫的完整的表結構。 本文出自:億恩科技【www.vbseamall.com】 |