 |
|

23.08.2019, 21:04
|
|
Познающий
Регистрация: 17.08.2019
Сообщений: 83
С нами:
3548433
Репутация:
0
|
|
Предыдущая статья - ссылочка
Следующая статья: Давайте учиться SQL-инъекциям вместе!
Ссылка на задание: SQL injection challenge
Усё, 7й таск решил. Давайте разбираться, что да как.
Так-с. Что мы имеем. Нам желают удачи и ещё мы знаем, что в столбце login есть подстрока gentoo.
Вдуплял минут 5, что значит подстрока, но потом понял, вот строка: gentoo023, а подстрока в ней gentoo, надеюсь понятно)
И ещё, теперь у нас фильтруются намного больше символов, чем в прошлом задании.
Для начала составим запрос без обхода экранирования символов.
-1 union SELECT * FROM users WHERE login LIKE '%gentoo%'
Давайте разбирать. У нас в запросе новый оператор LIKE, данный оператор позволяет искать текст по шаблону.
LIKE '%gentoo%', знак % значит любое количество символов: 321gentoo421, в данном случае под % попадают числа 321 и 421.
Вроде бы с запросом разобрались, давайте его преобразовывать.
У нас в запросе присутствуют пробелы и в задании они фильтруются, обходим их таким способом: вместо пробела ставим - /**/
-1/**/union/**/SELECT/**/*/**/FROM/**/users/**/WHERE/**/login/**/LIKE/**/'%gentoo%'#
Теперь давайте преобразуем наш "поиск по шаблону", то есть: '%gentoo%', переводим его в hex(text to hex)
Внимание: переводим в hex формат без апострофов(одинарных кавычек).
%gentoo% - 25 67 65 6e 74 6f 6f 25 - 0x2567656e746f6f25
Заменим шаблон в запросе:
-1/**/union/**/SELECT/**/*/**/FROM/**/users/**/WHERE/**/login/**/LIKE/**/0x2567656e746f6f25#
Готово. Отправляем запрос и получаем доступ к следующему заданию.
Подсказка для следующего задания от нашего сэнсэя explorer`a: blind sql injection, гуглим, ищем, читаем, учимся.
|
|
|

23.08.2019, 23:05
|
|
Новичок
Регистрация: 05.08.2018
Сообщений: 0
С нами:
4091032
Репутация:
0
|
|
Поздравляю! Прогресс виден. Видно, что человек учится.
Есть решение покороче:
-1/**/or/**/login/**/like/**/0x2567656e746f6f25#
или так
/*!-1/**/or/**/login/**/like/**/0x2567656e746f6f25*/
Следующий уровень интереснее, и уже сложнее - за один запрос решить не получится.
|
|
|

23.08.2019, 23:18
|
|
Познающий
Регистрация: 17.08.2019
Сообщений: 83
С нами:
3548433
Репутация:
0
|
|
explorer сказал(а):
Поздравляю! Прогресс виден. Видно, что человек учится.
Есть решение покороче:
-1/**/or/**/login/**/like/**/0x2567656e746f6f25#
или так
/*!-1/**/or/**/login/**/like/**/0x2567656e746f6f25*/
Следующий уровень интереснее, и уже сложнее - за один запрос решить не получится.
Спасибо) Даа. Следующий уровень кардинально отличается от других. Пока, что единственный способ, который я вижу это перебор ложью и истинной, пожалуй поищу ещё.
|
|
|

23.08.2019, 23:20
|
|
Познающий
Регистрация: 17.08.2019
Сообщений: 83
С нами:
3548433
Репутация:
0
|
|
explorer сказал(а):
-1/**/or/**/login/**/like/**/0x2567656e746f6f25#
Ой. Не знал, что оператор LIKE можно использовать вместе с OR. Полезная информация!
|
|
|

23.08.2019, 23:44
|
|
Новичок
Регистрация: 05.08.2018
Сообщений: 0
С нами:
4091032
Репутация:
0
|
|
SQL-инъекции мне нравятся потому что большой простор для размышлений, всегда можно написать много вариантов во всех случаях.
Вот накидал решение ещё более интересное -1||login/*!like*/0x2567656e746f6f25#
|
|
|

23.08.2019, 23:55
|
|
Познающий
Регистрация: 17.08.2019
Сообщений: 83
С нами:
3548433
Репутация:
0
|
|
explorer сказал(а):
-1||login/*!like*/0x2567656e746f6f25#
Интересный вариант решения. Только вот эту строку не могу понять - /*!like*/ . То есть отрицание like внутри комментария, не могу понять логику
|
|
|

24.08.2019, 00:09
|
|
Новичок
Регистрация: 05.08.2018
Сообщений: 0
С нами:
4091032
Репутация:
0
|
|
/*!*/ это условный комментарий в стиле СИ, никакого отрицания тут нет ) зато есть замена пробелу )
В сообщении выше, я уже давал код с примером этого комментария, посмотри внимательнее.
|
|
|

24.08.2019, 00:13
|
|
Познающий
Регистрация: 17.08.2019
Сообщений: 83
С нами:
3548433
Репутация:
0
|
|
explorer сказал(а):
/*!*/ это условный комментарий в стиле СИ, никакого отрицания тут нет ) зато есть замена пробелу )
В сообщении выше, я уже давал код с примером этого комментария, посмотри внимательнее.
Ааа. Понял. Просто из уроков информатики помню, что знак ! означает отрицание)))
|
|
|

24.08.2019, 00:19
|
|
Новичок
Регистрация: 05.08.2018
Сообщений: 0
С нами:
4091032
Репутация:
0
|
|
iBragimoff сказал(а):
Ааа. Понял. Просто из уроков информатики помню, что знак ! означает отрицание)))
Не, в программирование !=это не равноЗдесь нет знака равно. В таких комментах Mysql обязательно выполнит код. Кроме замены пробела, можно использовать и как замена # в конце выражения, ибо шарп не всегда работает. Например написать так:
-1||login/*!like*//*!0x2567656e746f6f25*/
Лучше чем официальный ман конечно же ничего нет. Все функции, операторы и т.д. ищи там. Вот страничка про комменты в mysql
MySQL :: MySQL 5.7 Reference Manual :: 9.6 Comment Syntax
|
|
|

24.08.2019, 00:45
|
|
Познающий
Регистрация: 17.08.2019
Сообщений: 83
С нами:
3548433
Репутация:
0
|
|
explorer сказал(а):
Не, в программирование !=это не равноЗдесь нет знака равно. В таких комментах Mysql обязательно выполнит код. Кроме замены пробела, можно использовать и как замена # в конце выражения, ибо шарп не всегда работает. Например написать так:
-1||login/*!like*//*!0x2567656e746f6f25*/
Спасибо за объяснение)
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|