Многобайтовая SQL-инъекция

Это очень часто обсуждаемая проблема, я знаю, но недавно я обнаружил эту уязвимость, и я проверяю, устойчив ли я к такой инъекции, однако я не могу имитировать такое поведение. Возможно, я не понимаю, какой запрос они используют.

Часть, которая меня интересует:

Первая уязвимость затрагивает семейство функций mysql_real_escape_string(), которое не отклоняет недопустимые многобайтовые символы. Например, в UTF-8 строка "0xC8 'attackersql" или "0xC8 \ ' attackersql" преобразуется в "one_character ' attackersql" (игнорируя пробелы). Итак, запрос:

SELECT... WHERE v = 'mysql_real_escape_string ("0xC8' attackersql") '

становиться:

ВЫБРАТЬ... ГДЕ v = '0xC8' 'attackersql'

SELECT... WHERE v = 'one_character' attackersql '

Таким образом, злоумышленник может ввести команду attackersql.

Вопрос звучит довольно глупо, но как я могу заставить эту инъекцию работать?

Примечание (отредактировано): я использую PHP 5.2.6, MySQL 5.0.51a (исправление), и для соединения с БД установлена ​​кодировка 'utf8'.

0 ответов

Другие вопросы по тегам