【发布时间】:2020-11-28 07:01:27
【问题描述】:
谁能解释一下这个 sql 注入查询是如何工作的
"Arizona'; TRUNCATE TABLE states ; SELECT * FROM states WHERE name = '"
【问题讨论】:
-
它不会删除数据库。它会截断一张表。
标签: python mysql mysql-python code-injection
谁能解释一下这个 sql 注入查询是如何工作的
"Arizona'; TRUNCATE TABLE states ; SELECT * FROM states WHERE name = '"
【问题讨论】:
标签: python mysql mysql-python code-injection
它不会删除数据库,但会清空表states。在您的代码中,如果您采用未经处理的输入并将其附加到查询中,那么此输入会将您的 SQL 语句转换为批处理。 Arizona 之后的'; 将结束第一个语句。接下来,执行TRUNCATE TABLE states; 语句,清除states 中的所有数据。最后,最后一条语句像这样SELECT * FROM states WHERE name = '' 执行。您的代码提供了最终的 ',因此 SQL 批处理不会失败。
【讨论】:
sql = "SELECT * FROM states WHERE name='" & form_input_data & "'" 所以您需要第一个 ' 或否则 SQL Server 会产生错误,并且不会执行注入。
我认为它只是截断表擦除数据并重新启动自动增量索引
【讨论】: