Этот вопрос только что возник у меня в голове, и я не смог его нигде найти, поэтому подумал, что это будет лучшее место, чтобы спросить. Это только для образовательных целей. Я использую надлежащие санитарные условия и не предоставил разрешение DROP для моей реальной базы данных.
Предположим, база данных со всеми разрешениями и простой запрос вставки с тремя значениями
INSERT INTO test(a,b,c) VALUES('$a','$b','$c');
Приведенный выше запрос уязвим для внедрения SQL.
Давайте предположим, что пользовательский ввод будет
- a ', (выберите БАЗА ДАННЫХ ()),' a ') -
- begone2
- begone3
Результирующий запрос будет следующим:
INSERT INTO test(a,b,c) VALUES('a',(select DATABASE()),'a')-- ','begone2','begone3')
Этот запрос будет выполнен и вставит имя базы данных в таблицу, но у меня вопрос Может ли злоумышленник удалить базу данных, фактически не зная имя базы данных? с таким запросом:
INSERT INTO test(a,b,c) VALUES
('a',(DROP DATABASE (select DATABASE())),'a')-- ','begone2','begone3')
Я попытался выполнить вышеуказанный запрос, и он выдает ошибку. Что не так с этим запросом?