Давайте возьмем следующий уязвимый запрос ($ id не экранируется):
SELECT * FROM table WHERE id = $id
Возможно ли в MySQL 5.x изменить некоторые данные с помощью оператора UPDATE , который появится внутри взломанного оператора SELECT?
Я думал о чем-то, используя функцию benchmark ():
SELECT * FROM table WHERE id = id OR benchmark(1, (UPDATE ...))
Но, похоже, это не работает:
ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'ОБНОВЛЕНИЕ ...
Есть ли другие возможности, не использующие хранимую процедуру?
Редактировать: и не использовать несколько запросов конечно ...