识别数据库

要想成功发动sql注入攻击,最重要的是知道应用正在使用的DBMS(数据库管理系统)。没有这一数据,就不能向查询注入信息并提取自己感兴趣的数据。


  1. web应用技术
    Microsoft SQL Server:ASP和.Net
    MySQL:PHP
    Oracle/MySQL:java
  2. 底层操作系统
    安装IIS(Internet信息服务器)作为服务器服务平台标志着应用是基于windows架构,那么,后台数据库很可能是SQL Server;
    运行Apache和PHP的Linux服务器则很可能使用的是开源数据库,比如MySQL
    当然,也不是绝对的,因为管理员很可能将不同技术以不平常的技术组合起来使用。
  3. 是否处于盲注
    识别数据库最好的方法在很大程度上取决于是否处于盲注。
    3.1 非盲跟踪
    大多数情况下,要了解后台DBMS,只需要查看一条非常详细的错误信息即可。
    获取标志信息:错误信息可以帮助我们相当准确的关于数据库所使用的技术。但是这些技术还不够,需要获取更多的信息

    查询各种DBMS版本

    数据库服务器 查询
    Microsoft SQL Server select @@version
    MySQL select versuon(),select @@version
    Oracle select banner from v$version,select banner from v$version where rownum=1

    3.2 盲跟踪
    从字符串推断DBMS版本

    数据库服务器 查询
    Microsoft SQL Server select ‘some’+’string’
    MySQL select ‘some’+’string’ , select concat(‘some’,’string’)
    Oracle select ‘some’ `[双竖线] ‘string’ , select concat(‘some’,’string’)

    从数字函数推断DBMS版本

    数据库服务器 查询
    Microsoft SQL Server @@pack_received,@@rowcount
    MySQL connect_id(),last_insert_id(),row_count()
    Oracle BITAND(1,1)

你可能感兴趣的:(sql注入)