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

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

 2007-05-18 09:39:43 来源:WEB开发网   
核心提示: 出现问题的地方是process_lgin.asp中产生查询语句的部分:Var sql="select * from users where username='"+username+"' and password='"+pas

出现问题的地方是process_lgin.asp中产生查询语句的部分:

Var sql="select * from users where username='"+username+"' and password='"+password+"'";

如果用户输入的信息如下:

Username:';drop table users—

Password:

数据库中表users将被删除,拒绝任何用户进入应用程序。'—'符号在Transact-SQL中表示忽略'—'以后的语句,';'符号表示一个查询的结束和另一个查询的开始。'—'位于username字段中是必须的,它为了使这个特殊的查询终止,并且不返回错误。

攻击者可以只需提供他们知道的用户名,就可以以任何用户登陆,使用如下输入:

Username:admin'—

攻击者可以使用users表中第一个用户,输入如下:

Username:' or 1=1—

更特别地,攻击者可以使用完全虚构的用户登陆,输入如下:

Username:' union select 1,'fictional_user','some_password',1—

这种结果的原因是应用程序相信攻击者指定的是从数据库中返回结果的一部分。

通过错误消息获得信息

这个几乎是David Litchfield首先发现的,并且通过作者渗透测试的;后来David写了一份文档,后来作者参考了这份文档。这些解释讨论了‘错误消息‘潜在的机制,使读者能够完全地了解它,潜在地引发他们的能力。

为了操作数据库中的数据,攻击者必须确定某些数据库和某些表的结构。例如我们可以使用如下语句创建user表:

  Create talbe users(
  Id int,
  Username varchar(255),
  Password varchar(255),
  Privs int
  )

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

Tags:SQL Server 应用程序

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