Что означает админ "или" 1 "=" 1? - PullRequest
0 голосов
/ 09 декабря 2018

Я запустил admin" or "1"="1 на сайте, у которого есть полные разрешения для запуска SQL-инъекций.Сайт был неправильно настроен, и я могу сразу войти в систему.

Чего я не понимаю, так это почему нет необходимости в двойных кавычках после финального числа 1?

Еслиphp работает так: username="admin" and password=md5("password"), тогда цитата после администратора "закрывает первую цитату.

"1" is closed, but I don't understand "1

Может кто-нибудь объяснить это для меня?

Заранее спасибо

1 Ответ

0 голосов
/ 09 декабря 2018

Подумайте о том, каким может быть SQL-запрос в приложении.

Вероятно, что-то вроде select * from users where username="<<username>>" and password=md5("<<password>>"), как вы заметили.

После введения <<username>> и <<password>> вам все еще нужночтобы иметь действительный запрос SQL, в противном случае приложение завершится с ошибкой.

Используя <<username>> для внедрения, кавычка после admin закрывает строку имени пользователя, or "1"="1 делает запрос следующим образом:

select * from users where username="admin" or "1"="1" and password=md5("<<password>>")

Это допустимо, и, поскольку and имеет более высокий приоритет, чем or, он получает пользователя с именем «admin» ИЛИ с паролем, в котором вы ввели пароль.другое поле - не имеет значения.

Если бы в конце вставленной строки была кавычка, запрос был бы select * from users where username="admin" or "1"="1"" and password=md5("<<password>>"), что является недопустимым SQL из-за двух кавычек (легко увидеть, потому чтоколичество кавычек нечетное).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...