Выполнение SQL-инъекции (Интерактивное упражнение)
Я пытаюсь решить интерактивное упражнение из моего университета. Есть поле для имени пользователя и одно для пароля. Я должен войти в систему с моим студенческим идентификатором (который, конечно, я знаю, но я не хочу раскрывать его здесь), не зная пароля. Попробовав несколько простых вещей, я получил сообщение об ошибке ниже. Я думаю, это должно помочь мне, но я не уверен. Возможно, кто-то может дать мне подсказку?
2 ответа
Ты можешь попробовать ' OR '1'='1
или же ' OR 1=1 --
синтаксическая ошибка, подобная этой, заключается в том, что строка запроса в коде не закрыта, поэтому вы должны попытаться закрыть ее.
Похоже, вы на правильном пути с вашим ' OR 1=1
, но тогда у вас есть синтаксическая ошибка, потому что строка в исходном запросе снова закрывается после того, как вы уже закрыли ее. Если вы закончите инъекцию с комментарием ' OR 1=1 --
это скажет серверу игнорировать остальную часть утверждения.
Изменить: я не уверен, почему подход с комментариями не сработал, но даже если вы используете другой упомянутый метод повторного открытия строки, я вижу, что этого по-прежнему недостаточно - приоритет AND выше, чем ИЛИ, поэтому вы получите все строки вместо одной с вашим именем пользователя. Вы можете попробовать вместо
' OR name='myId
производить
WHERE name='myId' AND password='' OR name='myId'
поэтому он будет соответствовать любой строке, которая имеет правильное имя пользователя и пароль, или любой строке, которая просто имеет правильное имя пользователя.