Выполнение 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'

поэтому он будет соответствовать любой строке, которая имеет правильное имя пользователя и пароль, или любой строке, которая просто имеет правильное имя пользователя.

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