在Usersetup.asp中,有一个数字类型的变量,被当成文本检验过滤了,从而造成了一个SQL注入漏洞。
问题出在 Sex=yxbbs.Fun.GetStr("Sex") ,在Yx_Cls.asp里定义了GetStr这个方法,里面其实对于通常注入来说,有效的只是过滤了单引号。而在下面没有再对Sex进行任何检验,就参与SQL语句执行了:
YxBBs.execute("update [YX_User] set Birthday='"&Birthday&"',Sex="&Sex&",PicW="&PicW&",PicH="&PicH&",Mail='"&Mail&"',QQ='"&QQ&"',Honor='"&Honor&"',Pic='"&PicUrl&"',Home='"&Home&"',Sign='"&Sign&"',IsQQpic="&IsQQpic&" where name='"&YxBBs.MyName&"' And Password='"&YxBBs.MyPwd&"'")
如果是mssql数据库版本的,支持多步语句,那这个漏洞就是致命的。如果是access版本,那危害就小的多了,也就是改改参数吧。比如,可以给自己银行增加点存款,那sex就是 1,BankSave=9999999,修改完资料,银行存款就变9999999了。
Yxbbs3.0 20090225版
暂无
暂无评论