Доброго времени суток.
Предмет Администрирование Unix систем.
Специальность: 10.05.05
Кафедра: КБ-4
Курс: 3
Сегодня будем разбирать цепочки заданий по администрированию Linux товарища @bykvaadm (habr, git). Администрирование Unix систем, дело весьма полезное, особенно для будущего специалиста, я молчу про тех, кто разворачивает java игровые сервера, пишет плагины и занимается администрированием серверов общей доступности.
Вообще можно с огрехами назвать это CTFкой для самых маленьких.
Вернемся к нашим православным, этот пост посвящен «игре» SuzenEscape.
Весьма интересная штука, которую лично мне было интересно «поковырять» на уровне кода. Каждое ваше подключение, это Docker-контейнер. У автора на хабре есть статья о Docker’е, и описание о том, какой он классный.
Суть «игры» проста, существуют цепочки заданий, в каждом из которых необходимо использовать возможности администрирования системы с помощью терминала (иных вариантов у тебя нет, ты подключаешься по SSH), чтобы найти заветный ключ к следующему заданию в цепочке.
Начнем.
connection
Как я говорил раньше, подключаться надо по SSH. Я, лично, для этого решил юзать PyTTY. Просто потому что я работаю из под продукции мелкомягких, а эта софтина у меня стоит на всех устройствах со времен революции на/в Украине.
Шаги
- Скачиваем PyTTY (официальный сайт)
- Устанавливаем это чудовище
- Открываем и видим окно
- Выдыхаем. Не пугаемся великого множества различных настроек, нам нужны только окно ввода «Host Name», выбор типа подключения SSH, и кнопка «Open».
- Успокоились? Теперь определяемся с хостом. На гите лабы указан домен suzen.myctf.ru, но обычно он лежит на боку, не будем пинать труп и возьмем пока еще не лежащий хост, который был выдан украдкой для выполнения лабы: suzen.shejt.net.
- Пишем в прогу наш хост и подключаемся по кнопке Open.
При появлении такого окошка, просто нажимайте «Да», я понимаю, что выглядит это как вызов дьявола или инструкция древнегреческого обряда по вызову богини Афины в стан славного города Волгодонск, но это не так. Прога просто напоминает, что хост не гарантирует безопасность.
Дальше логинимся в цепочку (chain). Помним, что для первого задания в цепочке действует правило логин=пароль.
То есть, для suzen1 пароль будет suzen1. А вот для следующего уровня, паролем будет уже полученный ответ из предыдущего уровня.
chain 1-4
Самая простая цепочка на обзор. Так как я не администрирую Linux каждый день, и не мастурбирую на него, радуясь каждому исполнению команды. У меня такого щенячего восторга от использования Терминала нет. Это не говорит о том, что я против этих «противных черных консольных окошечек», нет. Отнюдь, я просто к ним не отношусь, как и к депутатам РФ. Но это уже лирика. Я просто начинал с полиграфического дизайна, перешел на дизайн интерфейсов, а после на интерфейс мобильных приложений, поэтому я сторонник удобного, но «мощного» GUI.
Короче, дело к ночи, а мы тут в админ линуксоида полезли. Лезем дальше.
-
Host: suzen.shejt.net
- Login: suzen1
- Password: suzen1
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 :~???
И надо же, о чудо, наконец-то так, как я люблю: Строго по-делу.
Остальные выполняются по аналогии, важно помнить, что с гуглом вы богоподобны. Поэтому хорошенько запаситесь терпением и все непременно будет.