Может ли SQL-инъекция быть выполнена по сломанному запросу - PullRequest
0 голосов
/ 21 декабря 2018

Можно ли выполнить SQL-инъекцию, чтобы найти данные о базе данных MySQL, где таблица в исходном запросе не существует?

Например, рассмотрим этот запрос в PHP:

mysqli_multi_query("INSERT INTO users (id, email_address) VALUES (NULL, '$email');");

Если таблица users не существует, можно ли выполнить инъекцию?Основная проблема, которую я вижу, заключается в том, что вся операция запроса выдаст ошибку, если я попытаюсь внедрить что-то вроде следующего:

'); SHOW TABLES; --

Это больше для моего образования, чем что-либо на практикеиспользовать.Есть идеи?

1 Ответ

0 голосов
/ 21 декабря 2018

Это не сделает SQL-инъекцию, даже если таблица существует.mysql_query() не выполняет несколько запросов, поэтому введение ; для запуска второго запроса не будет работать.Большинство других MySQL API-интерфейсов схожи - вы должны использовать что-то вроде mysqli_multi_query(), чтобы иметь возможность выполнять несколько запросов за один вызов.

Но если первый запрос по какой-то причине не удался, ни один из следующих запросовбудет выполнен.Так что в вашем примере, если нет таблицы user, вы не можете вставить ее.

Это не очень интересно.SQL-инъекция обычно выполняется для запросов, которые работают должным образом, за исключением случаев, когда они не защищают от внедрения.Таким образом, нет вероятной ситуации, когда вы бы внедрили запрос, который обращается к несуществующей таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...