是否可以执行SQL注入来查找MySQL数据库中的数据,其中原始查询中的表不存在?
例如,在PHP中考虑这个查询:mysqli_multi_query("INSERT INTO users (id, email_address) VALUES (NULL, '$email');");
如果表users
不存在,还可以进行注射吗?我可以看到的主要问题是,如果我尝试插入如下内容,整个查询操作将抛出一个错误:'); SHOW TABLES; --
这对我的教育比任何实际用途都重要。有什么想法吗?
最佳答案
即使表确实存在,也不会进行SQL注入。mysql_query()
不执行多个查询,因此注入;
以启动第二个查询将不起作用。大多数其他MySQL api都是类似的——您必须使用类似于mysqli_multi_query()
的东西才能在一个调用中执行多个查询。
但如果第一个查询由于某种原因失败,则不会执行以下任何查询。因此,在您的示例中,如果没有user
表,则不能向其中注入。
不过,这不是很有趣。SQL注入通常是对正常工作的查询执行的,除非没有对注入进行适当的保护。因此,没有可能注入到访问不存在表的查询中。
关于mysql - 可以对损坏的查询执行SQL注入(inject)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53879182/