Oracle注入—报错注入
Oracle注入—报错注入
1、Oracle报错注入知识扫盲
一、Oracle报错注入知识扫盲
报错注入
报错注入就是,输入的一些能让数据库出错的语句,数据库会把这个错误回显给我们
OK,,什么语句能让数据库出错???
先来个知识扫盲吧
Oracle数据库
Dual表,是Oracle数据库里的一个表,Dual是一个实表,也有人说是虚表,如果直接查询这个表格,它只显示一个X,列名DUMMY,那么要他有什么用呢?
它实际上是为了满足查询语句的结构而产生
比如 select 1,2,3,4 >>>> 数据库报错
Why 数据库有很多种,虽然很多种,但是在语法结构上是大同小异的,可以说大致相似,但又用区别,不完全相同
像,select 1,2,3,4 在MySQL数据库就是可以执行的 但是在Oracle数据库就不行,因为规定后面要 from 表名
没有 from 表名 当然会出错了
但是在注入的时候又不知道表名,不会又像Access数据库那样一个一个去猜吧,,
这个Oracle数据库相对来说比较友好,,在每个Oracle数据库里都有一个Dual表,那是不是就不用猜了
所以Dual表存在的意义就是满足sql语句的
Oracle数据库弱化了库的概念,强化了用户的概念
在Oracle里把用户来当做库的区分,简单理解,一个用户就是一个库
Oracle数据库的比较常用语法
查询用户名:select user from Dual
做加减法:select 9+1 FROM Dual >>> 10
select * from all_tables 查询出所有的表
select * from user_tables 查询当前用户的表
select * from all_tab_columns 查询出所有字段
select * from user_tab_columns 查询当前用户的字段
select * from v$version 查版本
rownum=1 限制查询返回的总行数为一条
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,以此类推,这个伪字段可以用于限制查询返回的总行数
可以用rownum<3来要求它输出2条数据
只有1可以写= rownum=1
其他的只能写< rownum<2
rownum<3
rownum<4
......
<> 不等于符号
很多时候网站只允许输出一条数据,即使你遍历整个表,但是只能输出第一条数据,怎么办呢,,如何做到像,,MySQL数据库里的limit那样灵活呢
先看一个语句
select ronum r ,username form admin
思考一下输出的是不是一张表的呢,网站只是输出表里的数据,并不会把表给我们看,网站是查询表里的内容,但是在后台,它确实是一张表
ok,,那么我们可不可以form它呢 ,,of course
select username form (select rownum r ,username form admin) where rownum=1
再来看一个函数
CTXSYS.DRITHSX.SN(用户(查询内容))
这个函数就是报错注入使用的函数
在括号里面输入注入语句
返回报错信息,很简单,怎么讲呢,,你就想像这个是一个搜索框,搜索什么东西都搜不到,并告诉你没搜到括号里的值,并且会把括号里的值会返回给我们,
上面是帮助我们理解的 ,,其实是这样的‘查询对应的关键词,因为查询失败,爆出未查询到错误从而爆出查询内容,为什么会查询失败呢?,这个用户没用创建和修改的权限,我们随便输入一个用户名,在系统里大概率不会存在的用户,当然没有权限了,你想想,连这个用户都没有哪里来的权限呢’
举个例子
CTXSYS.DRITHSX.SN(1(select 1,2 form dual))
>>> '1,2'查找不到
大概就是这个意思
Oracle注入—报错注入的更多相关文章
- MSSQL手工注入 报错注入方法
例子:www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1[1]首先爆版本:http://www.kfgtfcj.gov.cn/lzygg/Zixun_show. ...
- SQL注入——报错注入
0x00 背景 SQL注入长期位于OWASP TOP10 榜首,对Web 安全有着很大的影响,黑客们往往在注入过程中根据错误回显进行判断,但是现在非常多的Web程序没有正常的错误回显,这样就需要我们利 ...
- sql注入 报错注入常用的三种函数
1.floor()函数 报错原因是 报错的原因是因为rand()函数在查询的时候会执行一次,插入的时候还会执行一次.这就是整个语句报错的关键 前面说过floor(rand(0)*2) 前六位是0110 ...
- ctfhub技能树—sql注入—报错注入
打开靶机 payload 1 Union select count(*),concat((查询语句),0x26,floor(rand(0)*2))x from information_schema.c ...
- 某SQL注入--报错注入payload
1.证明存在sql注入,根据这个报错语句,,有' 有% 2.payload 闭合语句 %' or (select extractvalue("anything",concat( ...
- 渗透之路基础 -- SQL进阶(盲注和报错注入)
SQL注入之盲注 实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术 盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程 当注入时,没有任何提示的时候, ...
- [原题复现][极客大挑战 2019]HardSQL(updatexml报错注入)
简介 原题复现: 考察知识点:SQL注入(报错注入,绕过过滤) 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台 特别感谢!) 榆林学院内可使用信安协会内部的CTF训练平 ...
- Oracle报错注入总结
0x00 前言 在oracle注入时候出现了数据库报错信息,可以优先选择报错注入,使用报错的方式将查询数据的结果带出到错误页面中. 使用报错注入需要使用类似 1=[报错语句],1>[报错语句], ...
- 大哥带我走渗透4(中)----oracle报错注入
5/30 报错注入 0x01 准备阶段 1. 基础知识今天了解了,但是,只能看懂和最基本的理解,不能自己上路.所以,还是要不停学习基础.并且及时总结.这有一篇很详细的文章:https://www.cn ...
- oracle报错注入的一些函数
oracle 报错注入 select dbms_xmltranslations.extractxliff((select banner from sys.v_$version where rownum ...
随机推荐
- Unity框架中的核心类
组件:Component 在Unity中,所有的游戏对象都可以挂载组件.组件控制着游戏对象的行为和外观,例如渲染.动画.碰撞检测等. 而Component就是组件的基类,提供了一些通用的方法和属性,例 ...
- 苹果打破12年惯例:iPad一整年未更新
1月2日消息,据媒体报道,自2010年首次亮相以来,苹果一直保持着每年至少发布一款新型号的传统. 但是在过去的2023年,苹果没有发布iPad,2023年苹果发布的唯一与iPad相关的产品是USB-C ...
- css 修改复选框的样式
效果图: 实现代码如下: /* 选中input标签类型为复选框的 */ input[type="checkbox"] { width: 16px; height: 16px; ve ...
- Java-生成字符串的MD5值
方法一:public static String getMd5(String str) { MessageDigest md5 = null; try { md5 = MessageDigest.ge ...
- MYSQL-另一种行转列的实现方式
行转列的实现方式:使用mysql.help_topic --行转列 SELECT b.help_topic_id, substring_index( a.levels, ',', b.help_top ...
- [JVM] JVM的类加载机制
JVM的类加载 首先我们来看下Java虚拟机的类加载过程: 如上图. 当JVM需要用到某个类的时候,虚拟机会加载它的 .class 文件.加载了相关的字节码信息之后,会常见对应的 Class 对象,这 ...
- PAC主成分分析__784手写特征案例
from sklearn.neighbors import KNeighborsClassifier as KNN from sklearn.decomposition import PCA from ...
- NC24438 [USACO 2016 Ope P]262144
题目链接 题目 题目描述 Bessie likes downloading games to play on her cell phone, even though she does find the ...
- Ubuntu 20.04 出现 SSL_connect: error:1425F102 .. unsupported protocol问题的解决
在安装完Ubuntu 20.04后, 这个问题影响了好几个软件, 包括MySQL Workbench, Openfortigui等等, 出现的错误都是 ERROR: SSL_connect: erro ...
- win32 - PeekNamedPipe的用法
PeekNamedPipe: 将数据从命名管道或匿名管道复制到缓冲区中,而不将其从管道中删除.它还返回有关管道中数据的信息. 示例: #include <iostream> #includ ...