我有一个关于注释sql查询的问题。 SQL查询具有形成$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
所以我尝试1' or 1=1; #
,我让所有的用户和密码如我所料,但是当我使用--
上发表评论,而不是#
我得到一个语法错误。为什么会发生?
你能解释一下在每种情况下sql是如何形成的?
另外我注意到1' or 1=1 #
也可以。 #符号不会注释掉; ?DVWA sql注入
0
A
回答
2
正如你在读mysql manual:
在MySQL中, - (双破折号)注释风格要求的第二个短线应遵循由至少一个空格或控制字符(如空格,制表符,换行符,等等)
当添加仅--
到您输入...有以下没有空格或控制字符。你合成的查询将看起来像:
SELECT first_name, last_name FROM users WHERE user_id = '1' or 1=1--';
正如你可以看到,双破折号立即由;
,因为它不被视为一个评论,这导致一个语法错误,随后。
尝试结束
投入--
(后面有个空格)对于;
:这是没有必要在向服务器发出一个查询。这是只有来分隔不同的陈述,但是根本不需要单个陈述。
mysql命令行客户端不会将该字符发送到服务器,而是将其视为“执行指令”。
相关问题
- 1. DVWA SQL注入不工作
- 2. 命令注入DVWA硬难题
- 3. DVWA 1.8 - SQL注入 - 更改用户密码
- 4. DVWA登录错误
- 5. SQL注入插入
- 6. SQL注入
- 7. SQL注入mysql_real_escape_string
- 8. Hibernate SQL注入
- 9. TableAdapters SQL注入
- 10. SQL Server注入
- 11. EJB3 SQL注入
- 12. Rails SQL注入?
- 13. SQL注入vulnerablities
- 14. php sql注入
- 15. SQLAlchemy + SQL注入
- 16. SQL注入bwapp
- 17. SQL注入法
- 18. JPA SQL注入
- 19. PHP - SQL注入
- 20. SQL注入
- 21. DocumentDB Sql注入?
- 22. SQL注入2.0
- 23. Sql注入group_concat
- 24. 盲SQL注入
- 25. 笨SQL注入
- 26. mysqli_stmt_bind_param SQL注入
- 27. MSAccess SQL注入
- 28. SQL注入的OData关注
- 29. DVWA 1.9安装错误
- 30. Linq到SQL和SQL注入