Mysql 用sqlmap对数据库进行指纹识别

Mysql 用sqlmap对数据库进行指纹识别,mysql,sqlmap,Mysql,Sqlmap,我有MySQL 5.1.58,我执行了以下命令,用sqlmap对数据库进行指纹识别 python sqlmap.py -d "mysql://root:password@localhost:3306/northwind" --fingerprint' 输出是 [12:26:35] [INFO] the back-end DBMS is MySQL [12:26:35] [INFO] actively fingerprinting MySQL [12:26:35] [INFO] executin

我有MySQL 5.1.58,我执行了以下命令,用sqlmap对数据库进行指纹识别

python sqlmap.py -d "mysql://root:password@localhost:3306/northwind" --fingerprint'
输出是

[12:26:35] [INFO] the back-end DBMS is MySQL
[12:26:35] [INFO] actively fingerprinting MySQL
[12:26:35] [INFO] executing MySQL comment injection fingerprint
back-end DBMS: active fingerprint: MySQL >= 5.1.12 and < 5.5.0
           comment injection fingerprint: MySQL 5.1.58
这为我返回0,并且

SELECT (CASE WHEN (9427=9427/*!50159 AND 7430=2815*/) THEN 1 ELSE 0 END)
返回1

我知道50158对应于我的数据库版本,但为什么我在第一种情况下得到0,在第二种情况下得到1?

我在

MySQL服务器支持C风格注释的一些变体。通过使用以下形式的注释,您可以编写包含MySQL扩展但仍可移植的代码:

/*! MySQL-specific code */
在这种情况下,MySQL服务器像解析任何其他SQL语句一样解析和执行注释中的代码,但其他SQL服务器将忽略扩展。例如,MySQL服务器在下面的语句中识别STRAIGHT_JOIN关键字,但其他服务器不会:

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
如果在之后添加版本号!字符,仅当MySQL版本大于或等于指定的版本号时才执行注释中的语法。以下注释中的KEY_BLOCK_SIZE关键字仅由MySQL 5.1.10或更高版本的服务器执行:

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;
CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;