首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用sqlmap对数据库进行指纹识别

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

Stack Overflow用户
提问于 2018-05-13 10:45:41
回答 1查看 1.3K关注 0票数 1

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

代码语言:javascript
复制
python sqlmap.py -d "mysql://root:password@localhost:3306/northwind" --fingerprint'

输出是

代码语言:javascript
复制
[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

首先,什么是注释注入?

然后,我还打印了包含如下查询的有效载荷

代码语言:javascript
复制
SELECT (CASE WHEN (9427=9427/*!50158 AND 7430=2815*/) THEN 1 ELSE 0 END)

为我返回0,而且

代码语言:javascript
复制
SELECT (CASE WHEN (9427=9427/*!50159 AND 7430=2815*/) THEN 1 ELSE 0 END)

返回1。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-13 12:23:57

我在https://dev.mysql.com/doc/refman/8.0/en/comments.html上找到了答案

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

代码语言:javascript
复制
/*! MySQL-specific code */

在本例中,MySQL服务器与其他任何SQL语句一样,在注释中解析和执行代码,但其他Server将忽略这些扩展。例如,MySQL服务器在以下语句中识别STRAIGHT_JOIN关键字,但其他服务器不会识别:

代码语言:javascript
复制
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...

之后添加版本号!字符时,只有当MySQL版本大于或等于指定版本号时,才会执行注释中的语法。以下注释中的KEY_BLOCK_SIZE关键字仅由来自MySQL 5.1.10或更高版本的服务器执行:

代码语言:javascript
复制
CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50315262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档