zoukankan      html  css  js  c++  java
  • 注入判断数据库类型

    SQL注入-数据库判断

    国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQL占20%,其他的不足10%。

    常见的数据库Oracle、MySQL、SQL Server、Access、MSsql、mongodb等

    关系型数据库通过外键关联来建立表与表之间的关系,非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定.

    关系型数据库:由二维表及其之间的联系组成的一个数据组织。如:Oracle、DB2、MySql

    非关系型数据库:非关系型数据库产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能。如:NoSql、Cloudant

    常用组合:

    asp: sql server,Access
    .net : sql server
    php: PostgreSQL,Mysql
    java: Oracle,Mysql
    前端框架和数据库的组合,这个有助于缩小我们的判断范围。

    1. 是否可以使用特定的函数来判断,该数据库特有的

      1-  len和length
      在mssql和mysql以及db2内,返回长度值是调用len()函数;在oracle和INFORMIX则是通过length()来返回长度值。
      当你使用and len('a')=1的时候,返回正常页面时,可以推断当前的数据库类型可能是mssql,或mysql,或是db2。反之则可能会是oracle和informix。
      
      2-  @@version和version()
      在mysql内,可以用@@version或是version()来返回当前的版本信息。但无法判断是mysql还是mssql时,可以用version()函数来构造判断。
      version()>1 返回与@@version>1 相同页面时,则可能是mysql。如果出现提示version()错误时,则可能是mssql。
      
      3-  substring和substr
      在mssql中可以调用substring。oracle则只可调用substr
      
    2. 是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等

      “/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
      “--”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
      “;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
      
    3. 是否显可以利用错信息

    在注入点后直接加上单引号,根据服务器的报错信息来判断数据库。错误提示Microsoft JET Database Engine 错误 '80040e14',说明是通过JET引擎连接数据库,则表明数据库为ACCESS数据库,如果是ODBC的话则说明是MSSQL数据库。
    
    1. 开放端口号
  • 相关阅读:
    『ORACLE』 配置共享服务器(11g)
    『ORACLE』 对临时表空间相关操作(11g)
    『ORACLE』 清理监听日志(11g)
    『ORACLE』 表空间属性(11g)
    『ORACLE』 约束实验(11g)
    『ORACLE』 内置约束(11g)
    『ORACLE』 SQL语句简单应用(五)(11g)
    『ORACLE』 SQL语句简单应用(四)(11g)
    『ORACLE』 SQL语句简单应用(三)(11g)
    Unity 导出的android项目自动生成Private Libraries
  • 原文地址:https://www.cnblogs.com/kbhome/p/13414195.html
Copyright © 2011-2022 走看看