Это продолжение этого вопроса: уязвимы ли 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.