php - 有评论时 MySql 查询不运行

标签 php mysql sql database sql-injection

我试图通过将 SQL 代码插入到输入空间来模拟对我自己的数据库的 SQL 注入(inject)攻击。

我的 SQL 代码是:

SELECT * FROM Users 
WHERE username = '...' 
AND password = '...';

其中...是输入。

我尝试使用以下输入来选择每个用户并将输出限制为 1。

这是用户名输入:

' OR ''='

这应该获取所有用户名。

这是密码输入:

' OR ''='' LIMIT 1; -- 

这应该首先获取所有密码,然后将输出限制为仅 1 行,然后注释最后的 ';

所以执行的代码应该如下所示:

SELECT * FROM Users 
WHERE username = '' OR ''='' 
AND password = '' OR ''='' LIMIT 1; -- ';

由于某种原因这不起作用。我正在使用 SequelPro,它告诉我它正在运行 2 个查询,但没有输出任何内容。第二个查询是 -- ';

但是,如果我删除最后一部分并运行到第一个分号,它就会起作用并从数据库中检索单个用户。

这是怎么回事?

最佳答案

您的查询没有问题,您遇到的问题来自 SequelPro,该解析器似乎很生硬,对另一个查询进行了注释。

为了避免这种困惑,最好从伪造的输入中取出尾随分号

关于php - 有评论时 MySql 查询不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808996/

相关文章:

php - Laravel 5.2 通过 API 进行身份验证

php - 如何使用 localhost 托管我的 HTML 和 CSS 网站

mysql - 加入单表

sql - 如何限制 NVARCHAR 列上没有空字符串

SQL 选择到字段

php - 如果在 Woocommerce 中没有应用优惠券,则自动将折扣应用于用户角色

php - MySQL按不同日期选择,有日期限制但没有条目

MySQL 按用户名和未加密密码选择帐户

php - 哪种方式在数据库中存储和处理大量数据是合法的?将所有内容存储在一张表中还是通过 id(属性)为每个表创建新表?

mysql - SQL `update` 如果行中存在键组合 - 否则创建新行