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