是否可以执行SQL注入来查找有关MySQL数据库的数据,而原始查询中的表不存在?
例如,在PHP中考虑以下查询:
mysqli_multi_query("INSERT INTO users (id, email_address) VALUES (NULL, '$email');");
如果表users
不存在,是否仍可以执行注入?我可以看到的主要问题是,如果我尝试注入如下内容,整个查询操作将引发错误:
'); SHOW TABLES; --
这对我的教育来说,比实际使用的东西要多。有什么想法吗?
答案 0 :(得分:7)
即使表确实存在,也不会进行SQL注入。 mysql_query()
不会执行多个查询,因此注入;
来启动第二个查询将不起作用。大多数其他MySQL API都是类似的-您必须使用mysqli_multi_query()
之类的东西才能在一个调用中执行多个查询。
但是,如果第一个查询由于某种原因失败,则将不会执行以下任何查询。因此,在您的示例中,如果没有user
表,则无法将其插入。
但是,这不是很有趣。 SQL注入通常是对正常工作的查询执行的,除了不能适当地防止注入。因此,在任何情况下都不会插入正在访问不存在的表的查询。