SQL Server应用程序的高级Sql注入
2009-04-04 13:56:50 来源:WEB开发网这里讨论的是'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
)
- ››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表' (数...
更多精彩
赞助商链接