Пример внедрения PHP / MySQL

Это продолжение этого вопроса: уязвимы ли PHP для уязвимости для атаки на SQL-инъекцию? (спасибо всем, кто ответил там).

Тот же сценарий, но у меня есть этот код (на другой странице):

$ID = $_GET['id']; $sql = "SELECT * FROM blog WHERE id='$ID'"; $result = mysql_query($sql); 

Это должно быть достаточно легко использовать, верно?

Если я правильно помню, я НЕ МОЖЕТ запустить второй запрос внутри mysql_query (), но я должен уметь делать другие вредоносные вещи, не так ли? Хотелось бы иметь возможность вставлять пользователя в таблицу администратора или менять пароль или что-то в этом роде, но я предполагаю, что не смогу ничего сделать, кроме как касаться таблицы блога. Это верно? Любые предложения о том, как я могу поиграть и настроить что-нибудь, чтобы доказать, что есть проблемы?

Он называется UNION и позволяет вам извлекать из дополнительных таблиц, используя второй запрос.

Я предполагаю что-то вроде 1' UNION ALL SELECT username title, password body FROM users WHERE '1'='1 будет работать. (вытаскивает из таблицы users и сопоставляет значения имени пользователя и пароля в их эквивалентах в blog ).

Я не думаю, что кто-то подумает, что вы пытаетесь кого-то взломать – это законный вопрос.

Вы не можете запустить второй запрос здесь, но вы можете сделать что-то злонамеренное. Например, если запрос был запросом проверки подлинности следующим образом:

 SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$password'; 

Вы можете легко войти в систему с помощью ' OR 1 = 1 и получить доступ к веб-сайту.

Кроме того, если запрос был запросом DELETE или UPDATE, вы, вероятно, могли бы манипулировать им для запуска без предложения WHERE.