WEB开发网
开发学院数据库MSSQL Server SQL概述及在网络安全中的应用(上) 阅读

SQL概述及在网络安全中的应用(上)

 2007-05-19 09:43:22 来源:WEB开发网   
核心提示: 3.2 SELECT对于另一些情况而言,你必须根据查询那些有缺陷的web程序返回的结果,来判断和调整你提交的SQL查询字符串,以便搞定服务器.3.2.1 直接利用单引号你将面临的第一个错误是语句结构错误.一个结构错误表明SQL查询的语句结构存在缺陷.首先你应该明白,在没有编码引号的情况下,

3.2 SELECT

对于另一些情况而言,你必须根据查询那些有缺陷的web程序返回的结果,来判断和调整你提交的SQL查询字符串,以便搞定服务器.

3.2.1 直接利用单引号

你将面临的第一个错误是语句结构错误.一个结构错误表明SQL查询的语句结构存在缺陷.首先你应该明白,在没有编码引号的情况下, 插入脚本攻击是否可以成功.

直接SQL注射的时候,无论你提交什么语句都会被不加任何改变地应用于SQL查询中.试着提交参数的时候,先输入合法的值,然后在其后添加一个空格和一个OR,如果服务器产生了错误,那么直接SQL注射是可能的.提交的值可以是任何WHERE子句中用到的值,例如:

  SQLString = "SELECT FirstName, LastName,
   Title FROM Employees WHERE Employee = " & intEmployeeID

或者是紧跟于一个SQL关键字,例如表名或者表里的栏目名,比如

  SQLString = "SELECT FirstName, LastName,
  Title FROM Employees ORDER BY " & strColumn

所有其他的例子都是引号注射,在一个存在引号插入漏洞的程序里面, 任何一个你提交的参数,系统都会在前面和后面添加一个引号,就像这样:

  SQLString = "SELECT FirstName, LastName,
  Title FROM Employees WHERE EmployeeID = '" & strCity & "'"

为了能(break out)打破这引号,并伪造一个正确的查询,在你的SQL注射字符串中的SQL关键字之前必须包含一个单引号,而且在WHERE子句的后面也需要加上一个单引号.现在我们来谈谈"欺骗"的问题.是的,SQL SERVER会忽视在";--"后面的任何东西,但是只有MS的SQL SERVER会这样做.我们最好学习如何处理这个问题,这样我们在面对Oracle,DB/2,MySQL 和他种类的数据库服务器的时候就知道怎么做了.

上一页  1 2 3 4 5 6  下一页

Tags:SQL 概述 网络安全

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接