梦之奇迹注册网页漏洞-得到任何你想要的东西
漏洞 梦之注册系统的所有!
漏洞原因,由于梦之的编写者对用户的输入根本没采取什么过滤,只是简简单单的通过提交的表单来限制用户的输入长度,而且对一些最起码的 "'",'='都没有过滤掉,而这个是编程的大忌,现在很多高中生都知道过滤的重要,不知道这样的系统为什么会发布并在网上流传!
拿来源代码一看,整个系统能渗透的地方很多.在usezs.asp中有这么一段
accountname=request.form("username")
password=request.form("password")
character=request.form("userchr")
if instr(accountname,"'")<>0 then response.end
if instr(accountname,"=")<>0 then response.end
if instr(accountname,"%")<>0 then response.end dedecms.com
if accountname<>"" and password<>"" then
connstrs = "DBQ="+server.mappath(lifedbnames)+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
......
他知道对用户提交的名字进行了过滤,单没对用户提交的密码过滤,而直接带入数据库中,大家看:
......
end if
end if
set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from MEMB_INFO where memb___id = '"&accountname&"' and memb__pwd='"&password&"'"
rs.open sql,conn,1,1
if rs.eof or rs.bof then
response.write "<script language=javascript>alert('\n\n帐号信息错误,请重新填写!');history.back()</script>"
response.end
看见了么?我们就可以利用这段代码sql="select * from MEMB_INFO where memb___id = '"&accountname&"' and memb__pwd='"&password&"'"
输入一个构造的特殊的语句.
比如 1;select * from character;-- 这样你就可以操作数据库的character表,并可以通过insert,update等命令操作数据库,添加任何你想要的东西,级别,这样任何人都可以当GM了.
希望用 梦之 注册系统的4F网管注意了!
解决办法 账号检验后面添加
if instr(password,"'")<>0 then response.end
if instr(password,"=")<>0 then response.end
if instr(password,"%")<>0 then response.end
多机多线,希望大家喜欢
因为我所在的网络,收费是按照流量收的,而每月只有3G免费,流量,因此看了tatto的一机多线,弄了个多机多线,帖出来帮助一下大家,这样可以节省主机很大的资源,多台机器负担,希望大家喜欢。而且流量也分流了,我实验的分机IP地址是外部网的,内部网同样可以。
这种方法设置比较灵活,最重要的就是,一个线瘫痪不影响其他线的运行。主机可以不运行GAMESERVER,也节省主机资源。分机如果机器配置好,也可以运行多个线。
下面以三机三条线为例
(1)假设你的MU服务端放在d:\muserver.先修改d:\muserver\cs\Connectserverlist.dat,d:\muserver\cs\data\Connectserverlist.dat,d:\muserver\cs\data\ServerList.dat三个文件为如下内容:(好象只修改serverlist.dat也行.起见,全改了)
如果要3线共用一个地图,就是3线的玩家互相可见,就写成面这样:
0 "名" "主机IP" 55901 "show"
1 "名" "分机IP" 55901 "show" →注意这里是55901就是2线共用一个地图
2 "名" "分机IP" 55901 "show" →注意这里是55901就是2线共用一个地图
3线不共用地图,玩家互不可见,就改成下面这样:
0 "名" "主机IP" 55901 "show"
1 "名" "分机IP" 55902 "show" →注意这里是55902
2 "名" "分机IP" 55903 "show" →注意这里是55903
(2)把d:\muserver里面的data,GameServer三个文件夹拷到d:\muserver1中
放到分机A的D:\下;
把d:\muserver里面的data,GameServer三个文件夹拷到d:\muserver2中
放到分机B的D:\下。 dedecms.com
(3)用ue修改你拷到d:\muserver1中的gameserver.exe.就是d:\muserver1\gameserver\gameserver.exe.因为现在gameserver有多个.所以以前给出的绝对地址不一定正确.在ue中搜索WZ_MU_GS_MUTEX.注意全是大写.搜索记得把查找ASCII选中.找到后把这个字符串对应的16进制码全改成0就行了.修改好的gameserver.exe也覆盖MUSERVER2:\中的gameserver.exe
(如图)
(4)现在把d:\muserver\data中的serverlist.dat写为:
[gameserverinfo]
servername =名 →这里不变
servercode =0 →注意这里为0
connectmemberload =0
第二个文件夹,就是muserver1\data中的serverlist.dat写为:
[gameserverinfo]
servername =名 →这里不变
servercode =1 →注意这里修改为1
connectmemberload =0
第二个文件夹,就是muserver2\data中的serverlist.dat写为:
[gameserverinfo]
servername =名 →这里不变
servercode =2 →注意这里修改为2
connectmemberload =0
(5)除了原来的8个启动外,主机再加2个,2台分机一台一个,全部启动如下:
主机运行:
1----D:\MUSERVER\DATASERVER1\DATASERVER.EXE 55960
2----D:\MUSERVER\DATASERVER2\DATASERVER.EXE 55962
3----D:\MUSERVER\DATASERVER2\DATASERVER.EXE 55964(这个是多加的)
4----D:\MUSERVER\DATASERVER2\DATASERVER.EXE 55966(这个也是多加的)
5----D:\MuServer\CS\CS.exe
5----D:\muserver\JOINSERVER\JOINSERVER.EXE /p55970 /ca127.0.0.1 cp55557
7----D:\MuServer\MU2003_EVENT_SERVER\WZ_MU2003_EVENT_SERVER.exe
8----D:\MuServer\RankingServer\DevilSqure_EventServer.exe
9----D:\MUSERVER\EXDB\EXDB.EXE
10----D:\muserver\GAMESERVER\GAMESERVER.EXE 127.0.0.1 55970 127.0.0.1 55960 55901
分机A运行:
11----D:\muserve1\GAMESERVER\GAMESERVER.EXE 主机IP 55970 主机IP 55964 55902(这个是多加的,注意路径)
分机B运行
12----D:\muserver2\GAMESERVER\GAMESERVER.EXE 主机IP 55970 主机IP 55966 55903(这个也是多加的,注意路径)
注意:各个分机的GAMESERVER可以在主机前9个程序运行之后的任何时间内运行。