漏洞出现在user_diggs.asp文件第304行左右,用Request获得topic的值,然后用oblog.InterceptStr处理后赋给topic。oblog.InterceptStr的作用只是截断字符而已,并没有过滤特殊字符。接着往下看,在第316行就直接把topic放到了SQL语句里进行了数据库操作,这样漏洞就形成了。4.6版的ACCESS和SQL 都存在这个问题,但是因为变量所在的SQL语句是update,所以我们并不能用union来联合暴出密码,唯一的方法就只有用“;”来执行多语句,而ACCESS并不支持多语句,因此漏洞只影响到SQL版本。 oblog 4.6 关于如何修补漏洞的问题,把存在漏洞的语句 des = oblog.InterceptStr(RemoveHtml(Trim(Request("edit"))),255) topic = oblog.InterceptStr(Trim(Request("topic")), 255) 替换成 des = oblog.filt_badstr (oblog.InterceptStr(RemoveHtml(Trim(Request("edit"))),255)) topic = oblog.filt_badstr (oblog.InterceptStr(Trim(Request("topic")), 255)) 就可以了。
漏洞出现在user_diggs.asp文件第304行左右,用Request获得topic的值,然后用oblog.InterceptStr处理后赋给topic。oblog.InterceptStr的作用只是截断字符而已,并没有过滤特殊字符。接着往下看,在第316行就直接把topic放到了SQL语句里进行了数据库操作,这样漏洞就形成了。4.6版的ACCESS和SQL 都存在这个问题,但是因为变量所在的SQL语句是update,所以我们并不能用union来联合暴出密码,唯一的方法就只有用“;”来执行多语句,而ACCESS并不支持多语句,因此漏洞只影响到SQL版本。 oblog 4.6 关于如何修补漏洞的问题,把存在漏洞的语句 des = oblog.InterceptStr(RemoveHtml(Trim(Request("edit"))),255) topic = oblog.InterceptStr(Trim(Request("topic")), 255) 替换成 des = oblog.filt_badstr (oblog.InterceptStr(RemoveHtml(Trim(Request("edit"))),255)) topic = oblog.filt_badstr (oblog.InterceptStr(Trim(Request("topic")), 255)) 就可以了。