不知道各位admin有没有好好看过你们自己使用的注册、转生等等功能页面,不少站点用的都是这些问题页面,或许你会问:“那么多人用,会有什么问题啊?“ 来,我这里简单说明一下:
我拿清红名的页面举例,问题代码如下:
set rs1 = server.createobject("adodb.recordset")
sql="select * from character where accountid='"&n&"' and name='"&p&"' and pklevel<>3"
rs1.open sql,conn,1,3
这个时候有人又要问了:“这个有什么问题啊?“,好,请仔细看一下,mssql执行的语句纪录在sql这个变量中,然而sql这个变量中却包含了 n 和 p 2个变量,而在这个清红名页面的最前面我们可以看到:
n=request.form("username")
p=request.form("userchr")
n就是账号名 p就是用户id,然后后面有这样的校验语句:
if instr(n,"'")<>0 or instr(n,"=")<>0 or instr(n,"&")<>0 or instr(n,"%")<>0 then
response.write "您所输入的数据包含非法字符,对不起!"
response.end
end if
问题来了。。。。既然写这个页面的大哥知道去判断变量n是否含有非法字符,那为什么不去判断一下变量p呢???不要告诉我提交数据的时候有内容长度限制,想来捣蛋的只需要自己写个htm仿造一下清红名的提交页面就可以轻而易举的篡改数据,具体修改办法就不说了,反正网上多的一塌糊涂。。。不光是清红名页面,好多个页面都是同样的问题,没有想法了。。。
简单说一下修复办法,首先各位去查看一下自己所有的功能页面,凡是有类似前面我提到内容的页面都要改动,这类页面开始的地方会有一些语句用来获取前一页面post过来的数据,格式类似 xxxx=request.form("yyyy") ,只要有这种语句我们就需要用以下语句来判断变量xxxx是否拥有非法字符
if instr(xxxx,"'")<>0 or instr(xxxx,";")<>0 or instr(xxxx,"&")<>0 or instr(xxxx,"%")<>0 then
response.write "您所输入的数据包含非法字符,对不起!"
response.end
end if
当admin修改完所有页面后,这个漏洞就算防住了。。哎,整个sf中是否还存在别的漏洞我就不清楚了,大家好自为之吧。。。
织梦好,好织梦
1.76精品传奇_1.76天下毁灭_1.76复古传奇_英雄合击_中变靓装传奇_无忧传奇
传奇花屏补丁,花屏补丁,土城花屏补丁,盟重土城花屏补丁下载,土城花屏补丁下载,沙巴克花屏补丁,传奇土城花屏补丁下载
网站每天发布最新、最好的传奇版本下载和与传奇服务端配套开区传奇模版,网游技术教程全部免费下载!
无忧网络是目前唯一家所有的传奇服务端,传奇私服花屏补丁,盟重花屏补丁和传奇客户端下载都经过站长亲自测试并配有真实测试图!
所有的工具软件和传奇版本在发布之前,都会经过站长亲自测试,保证chuanqisf可以进入游戏,所有软件都无毒无插件!
本站声明:本站所有技术资料与下载资源均为网络搜集整理,并不代表本站的观点与立场,如有侵犯您的权益,请来信指出,本站将立即改正Copyright © 2002-2014 无忧网络 版权所有蜀ICP备09041899号