详解sql注入通过函数判断数据库类型


  本文标签:SQL 函数 数据库

  某些SQL函数可以判断数据库类型,下面就将为您介绍sql注入通过函数判断数据库类型,供您参考,希望对您更深入了解SQL函数有所帮助

  某日,发现一目标存在SQL注入,且过滤了select等相关敏感字段,用工具暂无法判断数据库类型  。
后发现调用某些SQL函数也可判断数据库类型,虽然SQL语句大部分是通用的  。但一些内置的函数还是有一定的区别  。

  len和length
在mssql和mysql以及db2内,返回长度值是调用len()函数;在oracle和INFORMIX则是通过length()来返回长度值  。
换句话说  。

  当你使用and len(a)=1的时候,返回正常页面时,可以推断当前的数据库类型可能是mssql,或mysql,或是db2  。反之则可能会是oracle和informix  。

  @@version和version()
在mysql内,可以用@@version或是version()来返回当前的版本信息  。但无法判断是mysql还是mssql时,可以用version()函数来构造判断  。
换句话说:

  version()>1 返回与@@version>1 相同页面时,则可能是mysql  。如果出现提示version()错误时,则可能是mssql  。

  substring和substr
在mssql中可以调用substring  。oracle则只可调用substr