На этот вопрос уже есть ответ здесь:
Я работаю на сайте, который был взломан с помощью SQL Injection (на первый взгляд, только записи db повреждены из-за межсайтового скриптинга) потенциальная уязвимость, которую я обнаружил после просмотра кода, заключается в том, что существует много вызовов mysql_query, входные данные которых вообще не экранируются .
Старый добрый:
$query = "SELECT * FROM mytable where name LIKE '%".$_GET['name']."%'"; /*HACK HERE*/
mysql_query($query, $connection);
Тем не менее, я не могу найти, как мы можем сделать что-нибудь крутое из этой уязвимости инъекции (под крутым я имею в виду что-то вроде INSERT или UPDATE). Я пытался построить такое утверждение:
SELECT * FROM mytable where name LIKE '%' AND WHERE id IN (INSERT INTO secondtable (id,description) VALUES (15, 'Fifteenth description');--%'
Безуспешно. Я полагаю, что INSERT здесь не при чем.
Я сейчас избегаю ввода всех пользователей в код, но я действительно не понимаю, как хакеры проникли на этот сайт, тогда я не уверен на 100%, что мое исправление сработает. Есть какие-нибудь блестящие предложения?
Спасибо