首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DVWA sql注入

DVWA sql注入
EN

Stack Overflow用户
提问于 2017-03-12 11:43:42
回答 1查看 760关注 0票数 0

我有一个关于注释掉sql查询的问题。sql查询具有该表单。

$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";

因此,我尝试让1' or 1=1; #和我得到所有的用户和密码,正如我所期望的,但是当我使用--作为注释而不是#时,就会出现语法错误。为什么会发生这种事?

您能解释一下在每种情况下sql是如何形成的吗?

我还注意到1' or 1=1 #也能工作。#符号不评论;?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-12 11:58:03

正如您可以在mysql手册中看到的那样

在MySQL中,-- (双破折号)注释样式要求第二个破折号后面至少有一个空格或控制字符(例如空格、制表符、换行符等)。

当只向输入中添加--时.后面没有空格或控制字符。您的综合查询如下所示:

代码语言:javascript
运行
复制
SELECT first_name, last_name FROM users WHERE user_id = '1' or 1=1--';

如您所见,双破折号后面紧跟着一个;,这会导致语法错误,因为它不被认为是注释。

试着在最后插入-- (后面有一个空格)

对于;:在向服务器发出的查询中,这是不必要的。这只是为了分离不同的语句,而不是只需要一条语句。

mysql命令行客户端不向服务器发送该字符,而是将其视为“执行指令”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42746974

复制
相关文章

相似问题

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