iBragimoff
31.08.2019, 22:16
Предыдущая статья - ссылочка (https://forum.antichat.xyz/threads/568876/)
Ссылка на задание: SQL injection challenge
Я вернулся, давайте продолжать начатое дело.
P.S. Отсутствовал из-за проблем со здоровьем, но всё уже в прошлом.
Остановились на 8 задании, очень таки новом для меня.
Из нескольких дней копания в интернете сделал вывод,
что для прохождения данного уровня у меня не хватает
опыта. И решил пойти чуть другой дорогой. Будем
разбирать решение и что самое главное сделаем
из этого выводы для следующих заданий.
https://forum.antichat.xyz/attachments/4852740/img_854d247530.png
Пожалуй закончим болтологию и приступим к делу.
Запрос очень легкий и понятный. Проблема заключается
в ответе от базы данных на стороне клиента, если я правильно
выражаюсь, мы видим только количество записей в столбце.
Но для решения нам нужно узнать пароль пользователя fast.
Из прочитанного мной объяснения:
https://forum.antichat.xyz/attachments/4852740/img_53af84bb64.png
Для лучшего понимания разберём что такое ASCII. В этом нам поможет Wikipedia:
https://forum.antichat.xyz/attachments/4852740/img_d51bec542c.png
А теперь посмотрим, что из себя представляет таблица ASCII:
https://forum.antichat.xyz/attachments/4852740/img_06194352a3.png
Как видите из заголовков столбцов, VALUE сопоставлено HEX (Шестнадцатеричная система счисления).
То есть букву A можно представить в компьютерном коде, как 41 и так далее, думаю разъяснили.
Взглянем на решение задания и будем отталкиваться от этого:
https://forum.antichat.xyz/attachments/4852740/img_d0e80155bc.png
P.S. Запрос прикрепил, чтобы не пришлось листать вверх.
https://forum.antichat.xyz/attachments/4852740/img_eeb15f42be.png
Так-с. С помощью -1 мы заглушили ID, то есть такогоID не существует и ответом будет FALSE,
а далее мы ставим условие OR и ID<=(Наш символ в HEX-формате). Остальное разберём подробнее.
Для этого, я развернул на Windows MySQL сервер и создал, что-то на подобии базы данных из задания.
https://forum.antichat.xyz/attachments/4852740/img_0cc72a69c5.png
P.S. ID, Логина и пароля, мы не знаем, поэтому написал наугад.
Вот отрывок из решения: (select ascii(mid(pass,1,1)).
Сразу возникает вопрос, что такое MID?
Давайте обратимся к нашему братишке Google:
https://forum.antichat.xyz/attachments/4852740/img_95b812a055.png
Давайте используем функцию MID на созданной нами базе данных:
https://forum.antichat.xyz/attachments/4852740/img_2e8df160fc.png
Видим, что запрос mid(pass,1,1), извлекает подстроку которая начинает с 1 символа строки и длинною в 1 символ, то есть - буква P.
Хмм. Надеюсь понятно объяснил предназначение функции MID. В любом случае жду в комментариях с вопросами.
Но узнав предназначение MID возникает ещё один вопрос, ЗАЧЕМ ОН НАМ?
Функция ASCII выводит первый символ строки в HEX формате:
https://forum.antichat.xyz/attachments/4852740/img_5fee6e5b02.png
В ответ мы получаем значение 80 в ASCII таблице - это буква P.
И чтобы нам перевести второй символ из строки: Password023,
нам нужно обрезать его с помощью mid. Вот так:
https://forum.antichat.xyz/attachments/4852740/img_586c8243dd.png
Функция ASCII на вход получает ответ от функции MID,
букву "a".
Всё объяснил. Начнём решать таск.
https://forum.antichat.xyz/attachments/4852740/img_1e188ac28c.png
Первый символ из столбца pass = 57, что есть в буквенно-числовом виде = 9.
И так далее. Получаем ASCII значение всех символов в строке и просто переводим их обратно в буквенно-числовой формат.
Ссылка на задание: SQL injection challenge
Я вернулся, давайте продолжать начатое дело.
P.S. Отсутствовал из-за проблем со здоровьем, но всё уже в прошлом.
Остановились на 8 задании, очень таки новом для меня.
Из нескольких дней копания в интернете сделал вывод,
что для прохождения данного уровня у меня не хватает
опыта. И решил пойти чуть другой дорогой. Будем
разбирать решение и что самое главное сделаем
из этого выводы для следующих заданий.
https://forum.antichat.xyz/attachments/4852740/img_854d247530.png
Пожалуй закончим болтологию и приступим к делу.
Запрос очень легкий и понятный. Проблема заключается
в ответе от базы данных на стороне клиента, если я правильно
выражаюсь, мы видим только количество записей в столбце.
Но для решения нам нужно узнать пароль пользователя fast.
Из прочитанного мной объяснения:
https://forum.antichat.xyz/attachments/4852740/img_53af84bb64.png
Для лучшего понимания разберём что такое ASCII. В этом нам поможет Wikipedia:
https://forum.antichat.xyz/attachments/4852740/img_d51bec542c.png
А теперь посмотрим, что из себя представляет таблица ASCII:
https://forum.antichat.xyz/attachments/4852740/img_06194352a3.png
Как видите из заголовков столбцов, VALUE сопоставлено HEX (Шестнадцатеричная система счисления).
То есть букву A можно представить в компьютерном коде, как 41 и так далее, думаю разъяснили.
Взглянем на решение задания и будем отталкиваться от этого:
https://forum.antichat.xyz/attachments/4852740/img_d0e80155bc.png
P.S. Запрос прикрепил, чтобы не пришлось листать вверх.
https://forum.antichat.xyz/attachments/4852740/img_eeb15f42be.png
Так-с. С помощью -1 мы заглушили ID, то есть такогоID не существует и ответом будет FALSE,
а далее мы ставим условие OR и ID<=(Наш символ в HEX-формате). Остальное разберём подробнее.
Для этого, я развернул на Windows MySQL сервер и создал, что-то на подобии базы данных из задания.
https://forum.antichat.xyz/attachments/4852740/img_0cc72a69c5.png
P.S. ID, Логина и пароля, мы не знаем, поэтому написал наугад.
Вот отрывок из решения: (select ascii(mid(pass,1,1)).
Сразу возникает вопрос, что такое MID?
Давайте обратимся к нашему братишке Google:
https://forum.antichat.xyz/attachments/4852740/img_95b812a055.png
Давайте используем функцию MID на созданной нами базе данных:
https://forum.antichat.xyz/attachments/4852740/img_2e8df160fc.png
Видим, что запрос mid(pass,1,1), извлекает подстроку которая начинает с 1 символа строки и длинною в 1 символ, то есть - буква P.
Хмм. Надеюсь понятно объяснил предназначение функции MID. В любом случае жду в комментариях с вопросами.
Но узнав предназначение MID возникает ещё один вопрос, ЗАЧЕМ ОН НАМ?
Функция ASCII выводит первый символ строки в HEX формате:
https://forum.antichat.xyz/attachments/4852740/img_5fee6e5b02.png
В ответ мы получаем значение 80 в ASCII таблице - это буква P.
И чтобы нам перевести второй символ из строки: Password023,
нам нужно обрезать его с помощью mid. Вот так:
https://forum.antichat.xyz/attachments/4852740/img_586c8243dd.png
Функция ASCII на вход получает ответ от функции MID,
букву "a".
Всё объяснил. Начнём решать таск.
https://forum.antichat.xyz/attachments/4852740/img_1e188ac28c.png
Первый символ из столбца pass = 57, что есть в буквенно-числовом виде = 9.
И так далее. Получаем ASCII значение всех символов в строке и просто переводим их обратно в буквенно-числовой формат.