Немного о Дневнике Сьюзен

Доброго времени суток.

Предмет Администрирование Unix систем.
Специальность: 10.05.05
Кафедра: КБ-4
Курс: 3

Сегодня будем разбирать цепочки заданий по администрированию Linux товарища @bykvaadm (habr, git). Администрирование Unix систем, дело весьма полезное, особенно для будущего специалиста, я молчу про тех, кто разворачивает java игровые сервера, пишет плагины и занимается администрированием серверов общей доступности.

Вообще можно с огрехами назвать это CTFкой для самых маленьких.

Вернемся к нашим православным, этот пост посвящен «игре» SuzenEscape.
Весьма интересная штука, которую лично мне было интересно «поковырять» на уровне кода. Каждое ваше подключение, это Docker-контейнер. У автора на хабре есть статья о Docker’е, и описание о том, какой он классный.

Суть «игры» проста, существуют цепочки заданий, в каждом из которых необходимо использовать возможности администрирования системы с помощью терминала (иных вариантов у тебя нет, ты подключаешься по SSH), чтобы найти заветный ключ к следующему заданию в цепочке.

Начнем.

connection

Как я говорил раньше, подключаться надо по SSH. Я, лично, для этого решил юзать PyTTY. Просто потому что я работаю из под продукции мелкомягких, а эта софтина у меня стоит на всех устройствах со времен революции на/в Украине.

Шаги

  1. Скачиваем PyTTY (официальный сайт)
  2. Устанавливаем это чудовище
  3. Открываем и видим окно

  1. Выдыхаем. Не пугаемся великого множества различных настроек, нам нужны только окно ввода «Host Name», выбор типа подключения SSH, и кнопка «Open».
  2. Успокоились? Теперь определяемся с хостом. На гите лабы указан домен suzen.myctf.ru, но обычно он лежит на боку, не будем пинать труп и возьмем пока еще не лежащий хост, который был выдан украдкой для выполнения лабы: suzen.shejt.net.

  1. Пишем в прогу наш хост и подключаемся по кнопке Open.

При появлении такого окошка, просто нажимайте «Да», я понимаю, что выглядит это как вызов дьявола или инструкция древнегреческого обряда по вызову богини Афины в стан славного города Волгодонск, но это не так. Прога просто напоминает, что хост не гарантирует безопасность.

Дальше логинимся в цепочку (chain). Помним, что для первого задания в цепочке действует правило логин=пароль.

То есть, для suzen1 пароль будет suzen1. А вот для следующего уровня, паролем будет уже полученный ответ из предыдущего уровня.

chain 1-4

Самая простая цепочка на обзор. Так как я не администрирую Linux каждый день, и не мастурбирую на него, радуясь каждому исполнению команды. У меня такого щенячего восторга от использования Терминала нет. Это не говорит о том, что я против этих «противных черных консольных окошечек», нет. Отнюдь, я просто к ним не отношусь, как и к депутатам РФ. Но это уже лирика. Я просто начинал с полиграфического дизайна, перешел на дизайн интерфейсов, а после на интерфейс мобильных приложений, поэтому я сторонник удобного, но «мощного» GUI.

Короче, дело к ночи, а мы тут в админ линуксоида полезли. Лезем дальше.

suzen1

После логина мы увидим такое сообщение
Все это говорит нам об удачном подключении к контейнеру.

В приветственном сообщении, выведенном при успешном подключении к контейнеру, мы видим разрешенные утилиты (команды) для использования и поиска информации, необходимой для «прохождения» уровня.

В первом уровне мы видим неплохой список утилит, которых более чем достаточно для операций с файлами и прочтения текстовых файлов.

Разберем доступные утилиты, для чего они нужны:

  • ls — основа основ. С помощью этой команды мы смотрим на содержимое открытого каталога. Еще можем посмотреть разрешения, но это уже может быть сложно для начального уровня.
  • cd — еще одна основа основ. Расшифровкой этой команды является два слова: change directory. Думаю, на пару азами английского языка, можно понять для чего она нужна.
  • cat — просто команда для просмотра файлов в текстовом режиме. Это все, что вам, покамест, надо знать.

Так, так, окей. Минимальные знания для прохождения парочки уровней мы получили, пойдем их применим.

Смотри че покажу:

Итак, разбираемся что тут у нас произошло. Важно понимать, что я тут выделил цветом:

  • желтый — команды, которые я использовал
  • зеленый — тот самый ответ на задачу, который мы должны искать, чтобы пройти уровень

Первой командой ls мы проверили какие файлы есть в домашней директории контейнера. По условию задачи, нашей домашней директорией является /home/suzen

Выводом сего действия является скучное одно diary.txt.

Второй командой мы открываем сей единственный текстовый файл с помощью команды cat. И получаем абсолютно бесполезную историю с вполне себе полезным флагом, который и является необходимым для прохождения результатом.

Шаги для нахождения ответа

ls
cat diary.txt

Флаг из suzen1: ZGFpejZhaFJhZVNhZXhhaWJ1YWYK

Этот флаг будет паролем на suzen2.

suzen2

Тут нам дали просто нереально щедрое количество различных утилит. Все это нам, по сути, не надо. Давайте просто чекнем что у нас валяется в домашнем каталоге с помощью команды ls:

А тут у нас помоечка. Еще и дневничок с интересным названием.

Что вам нужно знать: $diary.txt очень неприятное название для файла. Просто знайте, что вы не сможете открыть его просто так, напрямую. Во-всяком случае в PyTTY точно нет.

Чтобы его открыть, воспользуемся экранированием. Добро пожаловать в Google.com.
На самом деле, это просто backslash перед символом, который вызывает сомнения. Это простое объяснение, не надо так отвечать преподавателю. Я предупредил.

Введем команду cat $diary.txt

Получим такой вот треш. Практически все это мусор, кроме розового текста. По идее это должно быть подсказкой. Что может еще отличаться от всей массы мусора если размер точно одинаков? — Дата. Я решил посмотреть даты создания этих безформатных файлов.

Для этого заюзаем команду ls с флагом -l.

Как мы видим, вся плеяда мусора в каталоге создана в 14:35. И лишь один файл создан в 14:43.

Проверим его командой:

cat :~???

И надо же, о чудо, наконец-то так, как я люблю: Строго по-делу.

Остальные выполняются по аналогии, важно помнить, что с гуглом вы богоподобны. Поэтому хорошенько запаситесь терпением и все непременно будет.

3 лайка