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

admin 2021年9月1日19:30:20评论78 views字数 1622阅读5分24秒阅读模式

从以往的经验来看,一些注入点可以被工具成功扫描出来[你们都明白的,我就说了],但确识别不出数据库类型或识别为错误的数据库类型


或是因为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),不再单独说明。测试的一些常用函数如下(“-”为不支持此函数):


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


函数名称


执行语句 不同数据库执行结果 备注
MySQL SQL Server Oracle
SUBSTRING SELECT   SUBSTRING('ABC',1,1) A A 字符串截取函数
SUBSTR SELECT   SUBSTR('ABC',1,1) A A 字符串截取函数
SUBSTRC SELECT   SUBSTRC('ABC',1,1) A 字符串截取函数
MID SELECT MID('ABC',1,1) A 字符串截取函数
ASCII SELECT ASCII('A') 65 65 65 字符转换为对应ASCII码
CHAR SELECT CHAR(65) A A ASCII码转换为对应字符
CHR SELECT CHR(65) A ASCII码转换为对应字符
LOWER SELECT LOWER('ABC') abc abc abc 将字符串转换为小写
UPPER SELECT UPPER('abc') ABC ABC ABC 将字符串转换为大写
CHAR_LENGTH SELECT   CHAR_LENGTH('ABC') 3 计算字符串长度
LENGTH SELECT LENGTH(123) 3 3 计算字符串长度
LEN SELECT LEN(123) 3 计算字符串长度
DATABASE SELECT DATABASE() test 返回当前数据库
DB_NAME SELECT DB_NAME() test 返回当前数据库
USER SELECT USER() root@% 返回当前用户
CURRENT_USER SELECT CURRENT_USER root@% dbo 返回当前用户
USER SELECT USER dbo SYSTEM 返回当前用户
LEFT SELECT LEFT('ABC',1) A A 返回字符串左边指定个数字符
PI SELECT PI() 3.141593 3.141592653589793 返回派值
REPLACE SELECT   REPLACE('ABC','A','X') XBC XBC XBC 字符串替换
MD5 SELECT MD5(1) c4ca4238a0b923820dcc509a6f75849b 返回字符串MD5值
HEX SELECT HEX(10) A 返回数字16进制值
TO_CHAR SELECT   TO_CHAR(10,'XX') A 返回数字16进制值


使用内置函数快速确定数据库类型总结:

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


本文始发于微信公众号(飓风网络安全):注入技巧:使用内置函数快速确定数据库类型

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年9月1日19:30:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   注入技巧:使用内置函数快速确定数据库类型https://cn-sec.com/archives/359685.html

发表评论

匿名网友 填写信息