Get the admin password! Writeup

Райтап от тиммейта 0ntgO.

В задании «Get the admin password!» нам дали url (http://gap.chal.ctf.westerns.tokyo/) и одну пару работающего логина и пароля (You can use test:test)

Get the admin password! Writeup


После ввода существующего логина и пароля (для учетки 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’а:

Get the admin password! Writeup

Get the admin password! Writeup


Результат атаки успешный (мы вошли в систему под пользователем 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.

Get the admin password! Writeup


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!}скачать dle 10.5фильмы бесплатно

  • Автор: drakylar
  • Комментарии: 0
  • Просмотры: 961

Добавить комментарий

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!