漏洞出现在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))
就可以了。
暂无评论