Oracle注入(基础篇)

零基础学黑客,搜索公众号:白帽子左一

先了解Oracle一些内容

Oracle做联合注入的注意事项(附带示例)

联合查询的字段数必须和前面的查询语句字段数一致

select id,username,password from admin union select 1,'admin' from dual (X)

联合查询的字段类型也必须和前面的查询语句字段类型一致

select id,username,password from admin union select 1,2,3 from dual (X)

联合查询的语句中必须要有表名

select id,username,password from admin union select 1,'admin','admin' (X)

正确的联合查询方法

select id,username,password from admin union select 1,'admin','admin' from dual ()

注意:oracle中包裹字符串用’'不要用""

Oracle自带的表

select * from all_tables 查询出所有的表

关键字段:
OWNER,用户(表的拥有者),不同的用户下会有不同的表
TABLE_NAME,表名

select * from all_tab_columns 查询出所有的字段

关键字段:
OWNER,用户(表的拥有者),不同的用户下会有不同的表
TABLE_NAME,表名
COLUMN_NAME,字段名

下面两个都是查询当前用户的表和字段的,所以没有OWNER字段,另外两个字段是有的

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

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

其实用的话都用查字段的表就好了,因为查字段的表里面存储了表名和字段

Oracle怎么实现mysql中Limit的功能

在Oracle中有一个比较特殊的存在,它就是rownum,它是一个伪列,它并不存储在任何表中,而是在当我们执行了查询语句之后,它就会出现,对查出来的数据进行编号,将它做为一个判断规则时,它是不支持用>号的,只能是=1或者<n

示例如下

SELECT * FROM user WHERE rownum = 1; -- 没问题
SELECT * FROM user WHERE rownum = 2; -- 有问题
SELECT * FROM user WHERE rownum < 2; -- 没问题
SELECT * FROM user WHERE rownum > 2; -- 有问题

那如果我们就是想对他用>呢,那么也有办法,用子查询给rownum取个别名,然后外面的查询语句,再使用别名调用rownum的值就好了

例如这里有5条数据我要取后三条数据

SELECT * FROM (SELECT rownum rn,DEPT.* FROM DEPT WHERE rownum < 6)r WHERE rn > 2;

如何判断是否是oracle数据库
通过版本号判断,and (select count(*) from v$version) > 0

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值