Декодирование файла, поиск уязвимости и взлом пароля. Решаем задачи по сетям из KnightCTF 2024

9bc1d9d39179b7252b12d64693f62612.png


Привет, Хабр! В прошлой статье я рассказывал о турнире KnightCTF 2024, который организовала команда из Бангладеша. Но туда вошли не все задачи. Под катом расскажу еще о четырех из категории networking. Читайте далее — узнаете, как получить секретную информацию в bash-history и найти пароль админа среди дампа. Пригодится как опытным, так и начинающим специалистам по информационной безопасности.
Дисклеймер: материал не обучает хакингу и не призывает к противозаконным действиям. Все описанное ниже лишь демонстрирует, какие пробелы в безопасности встречаются в реальных веб-приложениях. И предупреждает, на что нужно обратить внимание при разработке программного обеспечения.

Используйте навигацию, чтобы перейти к интересующей задаче:

→ Задача: Hidden File
→ Задача: Confidential
→ Задача: Super Admin
→ Задание: Famous Tool 2

Задача: Hidden File


Условие


Какой флаг у скрытого файла?

Дано


.pcap-файл

Решение


В прошлой части я рассказывал о задаче Port, в которой нужно найти номер порта у обратной оболочки сервера — 6200/tcp. Из кода эксплойта можно понять, что для коннекта использовался telnet, поэтому все команды были перехвачены в открытом виде. Оттуда я получаю bash_history.

a865d2aae19c8b13cef61de4328315a0.png


Содержание bash-history.

В выводе есть строка 37n3vq6rp6k05ov33o5fy5b33sj3rq2sy4p56735853h9. Это не классический Hex-формат, а Twin-Hex. В нем исходный текст преобразуется в два символа за раз.

Далее декодирую строку с помощью Python-модуля для Twin-Hex:

$ python twin_cipher.py -d "37n3vq6rp6k05ov33o5fy5b33sj3rq2sy4p56735853h9"


Готово — получаю флаг!

Задача: Confidential


Условие


Здесь есть что-то конфиденциальное. Сможете ли вы найти его? Пожалуйста, воспользуйтесь приложением к первой задаче.

Формат флага: KCTF{fl4G}

Решение


Вернемся к bash-history из предыдущей задачи. На 162 строке вижу скачанный архив maybeconfidential.zip. Давайте узнаем, что в нем находится.

31daf2e2174f46891daa01ef68e1a346.png


Содержание трафика.

В Wireshark можно получить файлы, которые передавались в момент записи дампа трафика. Выбираю ФайлЭкспортировать объектыHTTP, добавляю в фильтр maybeconfidential.zip:

b18a38fb7c11ec8350433b786dd1f320.png


Список HTTP.

Распаковываю архив. Внутри — .docx-файл с картинкой. На ней изображен маскот рыцаря Knight CTF 2024::

5a24de8aa6c63c3400b2f974f7dc3970.png


Изображение в архиве.

Формат .docx — тоже архив, нужно его открыть. В нем находятся три папки с файлами и XML-документ.

f9e61e46ffb5806011b33c73a0f1a574.png


С помощью обычного поиска по тексту ищу в названии KCTF. Флаг находится в maybeconfidential/maybeconfidential/word/document.xml. Задача решена!

b4pl8wf_sjw13ctzh8oms7lp3dk.png


Задача: Super Admin


Условие


Какой пароль у суперадминистратора в веб-приложении? Загрузите дамп SQL, чтобы решить задачу. Он может понадобиться вам для решения других задач.

Формат флага: KCTF{password}

Дано


Дамп SQL.

Решение


Интересная задача! Раз был дан только дамп, с него я и решил начать. И не прогадал: внутри была интересная часть с информацией о пользователях

82af2c81760db4cf46fdf56d02ec5cde.png


Содержание дампа SQL.

Забираю хеш пользователя root 5f27f7648285dec7954f5ee1ad696841 и расшифровываю его хеш-сумму в декодере md5. Получаю пароль — letmeinroot.

a884b0c1ecb8bfb511c96c6c2791d1cb.png


Декодированный пароль из хеш-суммы.

Подставляю пароль в строку для формирования флага — KCTF{letmeinroot}. Готово!

Задание: Famous Tool 2


Условие


Какой инструмент использовал злоумышленник, чтобы выявить уязвимость страницы редактирования задания? Пожалуйста, используйте вложение из первой задачи.

Формат флага: KCTF{toolname/version}

Решение


Продолжаю работать с уже известным .pcap-файлом. В коде эксплоита из задачи Port применяю фильтр http contains «sql». Вижу несколько обращений с IP-адресами, протоколами и другими параметрами.

f4c4a6af00dd6724c7e21915e65f8cde.png


Фильтр в эксплоите.

Похоже на сканирование — нужно проверить. В Wireshark открываю пакет 49187:

9bb6a8b40767fd2188af87d54bfbc3ab.png


Содержание пакета.

Нахожу User-Agent и вижу значение sqlmap/1.7.10#stable. Делаем вывод, что для атаки злоумышленник использовал инструмент sqlmap версии 1.7.10. Готово — формируем флаг.

Интересные материалы по CTF


Если хотите ознакомиться с другими задачами CTF-турниров, рекомендую почитать предыдущие статьи на эту тему.

© Habrahabr.ru