BotaniQ_Q
@BotaniQ_Q

Сам не понимаю, как я добился этой sql инъекции?

Изучаю SQL инъекции, вот задачник и в нем сразу мое решение 725d0b5ab0ee4133b07651c6a6ea66de.PNG
и как бы глупо не звучало, я не понял что я сделал :)
Поставил это случайно, окей я понимаю, что когда мы вводим кавычку, подразумевается что тело запроса окончено, дальше мы ставим комментарий (причем без пробела), все что после него не учитывается, потом снова кавычка, которая не учитывается вроде бы, потому что мы поставили знак комментария, однако если написать вот так '== или вот так ==' или вот так 'SELECT pass FROM users where id=9, то все это неверно, че за фигня и как это работает? И вот еще следующее задание 637ee54a468e4cb8b2602400a27b8361.PNGкоторое просит найти отличие с предыдущим, окей здесь стоит ограничитель LIMIT, который позволяет запросить только 1 строку, получается если мы введем предыдущий ответ, выдаст только первую строку, если бы лимита не было, выдало бы все, как обойти эту херабору, я не секу, гугление не помогло, вроде бы знаю о sql инъекциях на уровне, что могу на гуглдоркить сайтов и поламать их ручками без SQLmap, но что здесь твориться и что с ним делать не понимаю, но очень желаю разобраться
  • Вопрос задан
  • 1062 просмотра
Пригласить эксперта
Ответы на вопрос 2
saintbyte
@saintbyte
Django developer
Вы язык SQL знаете вообще ?
Ответ написан
@neol
Поставил это случайно, окей я понимаю, что когда мы вводим кавычку, подразумевается что тело запроса окончено, дальше мы ставим комментарий (причем без пробела), все что после него не учитывается, потом снова кавычка, которая не учитывается вроде бы, потому что мы поставили знак комментария, однако если написать вот так '== или вот так ==' или вот так 'SELECT pass FROM users where id=9, то все это неверно, че за фигня и как это работает?

Без пробела -- распознаётся как арифметическая операция, а не комментарий (это описано в документации).
чтобы вычислить ваше выражение
login ''--''
вступает в дело неявное преобразование типов, которое преобразует '' в 0. Получается 0--0.
Чтобы сравнить все значения login в таблице c этим 0 опять вступает в дело преобразование типов и каждое значение приводится к числу (соответственно если логин начинается не с цифры, большей 0, то он будет равен 0). Ну и в результате запрос возвращает все логины, начинающиеся не с цифры, большей 0.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы