Найти в Дзене
Hypro-Y

CTF ringzer0team - SQL Injection 5: Just another login form

Это задание немного отличается от иных SQL инъекций (потому что это не совсем SQL) и лично я убил много времени на это задание хотя по сути оно пустяковое, если знать одну важную особенность хоть она и не очевидна.

Первое что мы видим это типичная форма авторизации:

И тут я перепробовал множество базовых комбинаций, типа:

admin' --
admin' or 1=1 --
admin' or 1=1 #
и т.д.

Но все они приводили к подобному результату:

-2

Именно в этот период бесполезных попыток я убил добрых пару часов из жизни. Пока при очередной попытке

admin'/**/or/**/1=1/*

Меня не смутила совсем другая, но уж очень знакомая надпись

я про надпись "Bad search filter"
я про надпись "Bad search filter"

Я продолжал пытаться подобрать инъекцию мне все казалось что там какая-то фильтрация и я пытался заменять вводимые значения аналогичными, например в выше указанном юзернейме нет ни одного пробела, мне казалось что они str_replace-сятся или что то типа того. И попутно я пытался вспомнить что же это за фраза знакомая пока не попробовал ее поискать в яндексе. Результат все расставил на свои места это часть из ответа при ldap_search с некорректными параметрами (среагировал так на *) (возможно еще где то его тоже видел). Признаться я с LDAP сталкивался не особо часто, но сама эта тема с уязвимостью с * как то попадалась на глаза. Решение оказалось очень простым, на момент поиска я пробовал

username: admin
password: *
-4

Но его устроит даже:

username: *
password: *
-5

Вот и заветный флаг! И опять же все сводится к вопросу о фильтрации пользовательского ввода.

That's all, folks!