EDIT
Есть несколько векторов атаки с addslashes()
. Первый, который я выбрал ниже, был основан на статье, ранее связанной в ответе, который цитировал ее в поддержку против претензии. По крайней мере, еще один - со слишком длинными строками, использующими не менее кодировки UTF-8.
http://www.erich -kachel.de /? Тег = addslashes
Техника, подобная приведенной ниже, может быть построена. Как бы то ни было, команда MySQL посчитала целесообразным удалить magic_quotes
, а также настоятельно рекомендовала не притворяться, что addlashes () является реальной формой защиты. Может быть, вы знаете, что команда MySQL будет знать лучше? Для чего стоит mysql_real_escape_string, также есть некоторые уязвимости в крайнем случае, но, поскольку она специфична для MySQL, а не только для PHP, она идет одна шаг вперед. Лучшим решением будет использование параметров запроса.
Оригинальный ответ следует
Да, можно войти в систему как администратор. Не за один раз, но два прохода сделают это.
Ссылка - http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
(Да, это та же ссылка из другого ответа, но вместо этого я понимаю, что это обычно возможно для любого многобайтового набора символов, кроме utf8)
Вы не указали, является ли ваша система многобайтовой, но поскольку вопрос открыт, я буду считать, что это так.
$p_username = chr(0xbf) . chr(0x27) . ';' .
"update user set password='password', '.
"username='" . chr(0xbf) . "' where username='admin' /*';
"SELECT password FROM user WHERE username = '$p_username'"
Я изменил имя пользователя и пароль пользователя "admin"
Этот тип атаки возможен с любой кодировкой символов, где есть допустимый многобайтовый символ, заканчивающийся на 0x5c