我试图通过将 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/