MENU

注入技巧:使用内置函数快速确定数据库类型

February 19, 2015 • Security

从以往的经验来看,一些注入点可以被sqlmap成功扫描出来,但确识别不出数据库类型或识别为错误的数据库类型;如下图:

1468591102330689.png

或是因为WAF拦截,或是因为过滤,我们不再去深究其原因;这个时候多半需要手工探测数据库类型并辅以小脚本来跑数据了。那么如何快速的确定数据库类型呢?一个最常用且高效的方法就是使用不同数据库所特有的内置函数。如:

id=1' AND SUBSTRING('ABC')='A' and 'a'='a

如果条件成立,页面响应符合预期,那么我们便可以确定后端数据库类型一定不是Oracle,因为Oracle是没有SUBSTRING这个内置函数的。

诸如此类,我依次尝试了一些数据库的内置函数,并确定其在对应的数据库类型中是否可用;下面的列表列举了最常用的三种数据库类型:MySQL、MSSQL、ORACLE中一些函数是否被支持的情况。

(排除因同一数据库类型不同版本的而导致的函数支持不同的情况)测试使用的数据库对应版本为:

  • MySQL: 5.5.46-0ubuntu0.14.04.2
  • MSSQL: Microsoft SQL Server 2008 (RTM) – 10.0.1600.22 (X64)
  • ORACLE: Oracle Database 11g Release 11.2.0.1.0 – 64bit Production

其中ORACLE的SELECT必须要跟上对应的FROM(SELECT xxx FROM DUAL),不再单独说明。测试的一些常用函数如下(“-”为不支持此函数):

使用内置函数快速确定数据库类型.xlsx

Archives QR Code
QR Code for this page
Tipping QR Code