SQL概述及在网络安全中的应用(下),SQL概述及在网络安全中的应用(下)
【 tulaoshi.com - SQLServer 】
3.2.3 利用结构错误查询表单
一些数据库服务器返回的错误信息中包含了一部分格式错误消息,你可以通过分析这些片断来构造你提交的INJECTION语句,有些你提交的字符串会返回有用的信息,有的却不会,这主要是以来于web应用程序中SQL查询语句是如何设计的.下面这些是我推荐你尝试的字符串:
' BadValue' 'BadValue ' OR ' ' OR ; 9,9,9
通常这些字符串中的一些会返回相同的信息,或者根本不返回信息.但是有例子告诉我们,可能有的信息只有用他们中的一个才能得到,所以你最好提交字符串的时候,把他们都试一遍.
3.2.4 圆扩弧
如果有缺陷的查询语句中包含圆扩弧'(' (就像下面将会举的例子那样),或者返回的错误信息里显式地提醒你缺了'('号(Oracle这么做),那么你应该在你提交的SQL注射字符串中加入'('号.通常在WHERE子句后面加一个括号,但是在一些情况下,你需要加2个或者更多的括号.
下面是parenthesis.asp的源码:
mySQL="SELECT LastName, FirstName, Title, Notes, Extension FROM Employees WHERE (City = '" & strCity & "')"
我们插入如下的值:
"') UNION SELECT OtherField FROM OtherTable WHERE (''='"
那么传送给SQL SERVER的语句就变成了这样:
SELECT LastName, FirstName, Title, Notes, Extension FROM Employees WHERE (City = '') UNION SELECT OtherField From OtherTable WHERE (''='')
3.2.5 LIKE语句查询
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)另一个大的灾难是陷入一个LIKE子句的陷阱.(Seeing the LIKE keyword or percent signs cited in an error message are indications of this situation.)大多数的web搜索程序使用LIKE子句来查询数据库,比如下面这个:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)SQLString = "SELECT FirstName, LastName, Title FROM Employees WHERE LastName LIKE '%" & strLastNameSearch & "%'"
这里面的%是通配符,在这个例子里,WHERE子句会返回TRUE,只要LASTNAME里有字符串含有strLastNameSearch.为了阻止SQL SERVER返回预计中的记录,你构造的SQL语句里必须含有LASTNAME里没有的字符串.web搜索程序搜索的字符串来自于用户的输入.通常有一个'和一个%在输入的字符串之前,因此我们构造字符串时,需要在WHERE子句中匹配它们.如果你提交了NULL作为搜索字符串,那么LIKE的参数会变成"%%",这是一个全匹配,会返回所有的记录。
来源:http://www.tulaoshi.com/n/20160129/1496874.html
看过《SQL概述及在网络安全中的应用(下)》的人还看了以下文章 更多>>