要想成功发动sql注入攻击,最重要的是知道应用正在使用的DBMS(数据库管理系统)。没有这一数据,就不能向查询注入信息并提取自己感兴趣的数据。
- web应用技术
Microsoft SQL Server:ASP和.Net
MySQL:PHP
Oracle/MySQL:java - 底层操作系统
安装IIS(Internet信息服务器)作为服务器服务平台标志着应用是基于windows架构,那么,后台数据库很可能是SQL Server;
运行Apache和PHP的Linux服务器则很可能使用的是开源数据库,比如MySQL
当然,也不是绝对的,因为管理员很可能将不同技术以不平常的技术组合起来使用。 是否处于盲注
识别数据库最好的方法在很大程度上取决于是否处于盲注。
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)