【问题标题】:SQL Injection MethodSQL注入方法
【发布时间】:2017-07-03 04:55:07
【问题描述】:

注射程序是:

SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;

但是,我的问题是注入查询在 sql 中是如何工作的?

【问题讨论】:

标签: sql sql-injection


【解决方案1】:

当您在代码中将查询作为字符串时,就像这样

Query = "SELECT UserId, Name, Password FROM Users WHERE UserId = '" + sUserID + "'"

所以你通过 sUserID = "ABC' OR 1=1;"

这将被翻译成

SELECT UserId, Name, Password FROM Users WHERE UserId = 'ABC' OR 1=1

【讨论】:

  • @IsmayilS 很高兴听到我提供了帮助 :) 如果有,请将其标记为答案
【解决方案2】:

由于条件1=1 始终为true,将其添加到WHERE 语句的末尾会使其无关紧要,并且始终为true,就好像WHERE 语句根本不存在一样。因此,无论在WHERE 语句中添加任何其他条件,始终都会执行查询。

在您提供的示例中,如果您允许您的用户写下自己的userID,他们可以在输入字段或网站的 URL 地址中写下105 or 1=1,因为or 1=1 使UserId=105 无用,并且查询将始终选择数据,因此是 SQL 注入。

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 2022-10-22
    • 2017-12-06
    • 1970-01-01
    • 2012-05-27
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多