小心你的WEB應(yīng)用程序成為數(shù)據(jù)竊賊的幫兇(5) |
發(fā)布時間: 2012/6/11 19:28:50 |
讓盲目攻擊起作用
假設(shè)在示例頁面中,我們已經(jīng)發(fā)現(xiàn)了盲目注入,我們希望發(fā)現(xiàn)關(guān)于表和數(shù)據(jù)庫設(shè)計(jì)的細(xì)節(jié)。請看下面的請求: wangzhan.com/userdetail.asp?username=zhangsan AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtype=0x55),1,1)),0)>65— 如果我們分解一下,會看出這個查詢的結(jié)果實(shí)際上是一個是或否的回答,“這個表名的第一個字符是一個比65大的ASCII值嗎?”先看最里面的查詢: SELECT TOP 1 name from sysObjects WHERE xtype=0x55 這意味著:獲取來自sysObjects(所有的表)列表最上面的一個名字,其xtype(對象類型)等于ASCII碼0x55(大寫的字母“U”),轉(zhuǎn)換成用戶(user)表。所以,基本而言,我們獲取了用戶在數(shù)據(jù)庫中所創(chuàng)建的第一個表。為簡單起見,假設(shè)這個表就是“users”: SUBSTRING(users),1,1 現(xiàn)在,我們創(chuàng)建了一個子串,它包含了表名users的首個字符。其值為“u”: ISNULL(ASCII(u),0)>65 在這里我們查看u的ASCII碼值的結(jié)果是否大于65,確認(rèn)表名以字母開頭。如果答案是肯定的,查詢就會被處理。否則,查詢就不會被處理。 使用這種方法,我們可以對每個查詢簡單地增加數(shù)字,從而發(fā)現(xiàn)首個用戶名的第一個字母。例如,假設(shè)我們在大于117時(>117)得到了一個否定的響應(yīng),我們知道第一個字母是字母“u”,因?yàn)?ldquo;u”的ASCII值是117。在發(fā)現(xiàn)這一點(diǎn)之后,我們可以簡單地改變SUBSTRING參數(shù)來選擇第二個字母,然后是第三個字母,等等。 最后,在沒有錯誤代碼時,我們借助于盲目注入就可以發(fā)現(xiàn)有漏洞的Web應(yīng)用程序的數(shù)據(jù)庫的完整的表結(jié)構(gòu)。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |