Кто-нибудь знает, что-то вроде OR 1#
означает в контексте инъекции mysql?
Что означает # в sql?
Ответ 1
Это версия MySQL разделителя комментариев строки. В стандартном SQL разделитель комментариев строки --
.
-- This is a standard SQL comment.
# This is a MySQL comment.
Итак, в контексте SQL-инъекции, если злоумышленник знает, что вы используете MySQL, он может использовать его для внезапного прекращения действия вредоносного SQL, заставляя MySQL игнорировать все, что стоит за #
, и выполнять только те вещи, которые появляются перед этим. Однако это эффективно только для однострочных операторов SQL. Вот пример:
Input:
Имя пользователя:
fake' OR 1#
Пароль:pass
Результирующий SQL:
SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'
Выполняется как это, которое возвращает каждую строку:
SELECT * FROM users WHERE username = 'fake' OR 1
Ответ 2
Это начало комментария. Это означает, что все, что после этого будет пропущено парсером.