Разбор заданий зимнего конкурса 2018

Задания для админов

Ошибка в смартфоне (read-file)

Задание: Выберите вариант, который выведет в консоль содержимое файла.

- find /etc/passwd -exec false \; && cat file
- find /etc/passwd -exec false \; || cat file
- find /etc/passwd -exec true '{}' '+' || cat file
- find /etc/passwd -exec false '{}' '+' &| cat file
- rm file
- echo 'cat file' > file

Правильный ответ: find /etc/passwd -exec false \; && cat file

Решение:

Очевидно, что `rm file` и `echo 'cat file' > file` не помогут нам в решении задачи.
`find /etc/passwd -exec false '{}' '+' &| cat file` вообще содержит синтаксическую ошибку.
Правильный ответ — `find /etc/passwd -exec false \; && cat file`.
`-exec false \;` не влияет на статус всего `exec`.

 

Caga Tio (find-substrings)

Задание: Как правильно найти количество всех вхождений подстроки "you" в файле без учета регистра?

- grep -oi you < file | wc -l
- grep -oic you < file
- grep -ic you < file
- grep -i you < file | wc -l
- grep -oic you < file | wc -l
- cat file | shuf -i 1-10000 -n 1

Правильный ответ: grep -oi you < file | wc -l

 

«Незнакомец» (answer-in-file)

Задание: Найдите в консоли файл с ответом и прочтите его.

Правильный ответ: PRECISELY

Решение: Ни одна программа не запускается. Почему? Зачищен `${PATH}`. Ничего, мы и без него можем запускать `ls` и `cat`.

 

Железнодорожный музей (win-registry)

Задание: Какой раздел реестра Windows отвечает за автозагрузку программ?

- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRun
- HKEY_GLOBAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_USER\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\avtozagruzka

Правильный ответ: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

 

Что-то не так (external-ip)

Задание: Узнать внешний IP-адрес виртуальной машины. 

Правильный ответ: 185.189.13.117

Решение: curl icanhazip.com.

 

Заброшенная станция (admin-pass)

Задание: Нужно узнать пароль пользователя root.

root:$1$abcdefg$mZ64tkYl1xR1irHr6Bm/A0:0:0:root:/root:/bin/bash

Правильный ответ: windows.

Решение: Нужно пробрутить пароль по базам. Базы легко гуглятся, брутилки либо гуглятся, либо самостоятельно пишутся.

 

Библиотека храма Монсеррат (deeper)

Задание: В ВМ есть много вложенных папок. Нужно название последней самой глубокой папки.

Правильный ответ: GENIUS.

Решение: Вариантов решения много. Один из них — с помощью `find` и `sed` — `find te6zu/ | sed -E 's/[a-zA-Z0-9]+\//+/g' | sort | head -1`.

 

Сломанная флешка (utf-adm)

Задание: Найдите в файле ответ и введите его.

Правильный ответ: SO COOL

Решение: Дан файл в кодировке UTF-9. Его просто нужно перевести из UTF-9 в свою любимую.

 

Дворец Каталонской музыки (three-one-four-adm)

Задание: У вас есть файл. В нём дан ответ в явном виде. Введите его с точкой в строку ниже.

Правильный ответ: You're pretty good.

Решение: В URL дана подсказка. В процессе гугления можно найти  [πfs] - https://github.com/philipl/pifs.
Если немного её потестировать, то можно предположить, что файл `answer` — это файл с метаданными для неё, положить этот файл в директорию для метаданных и прочитать ответ из точки монтирования.

 

Вы очнулись (hidden-virus)

Задание: В консоли есть вирус. Нужно избавиться от него и починить все, что он наделал.

Решение:

Поведение вируса:
а) вирус замещает собой все основные команды в `/bin`, любая команда оттуда запускает вирус и передает управление `busybox`;
б) копия вируса начинает выполнение при запуске системы;
в) вирус проверяет наличие запущенной версии себя в системе, исключая текущий PID, и передаёт управление `busybox` при наличии, иначе форкается и передаёт управление `busybox`;
г) вирус в фоне проверяет наличие аккаунта злоумышленника, если его нет — создаёт новый;
д) вирус в фоне проверяет, что он все ещё замещает команды в `/bin`;
е) вирус в фоне проверяет, что он все ещё находится в автозапуске.

Шаги решения:
а) убить вирус с помощью `busybox`;
б) с помощью `busybox` удалить скрипт, замещающий `busybox`;
в) удалить вирус из автозапуска;
г) удалить аккаунт злоумышленника.
 

Задания для программистов

Ошибка в смартфоне (gcc)

Задание: Выберите опцию, с которой gcc не скомпилирует программу и покажет ошибку.

#include <stdio.h>
 
int main() {
    printf("%s", 'a');
    return 0;
}

- gcc -Werror file.c
- gcc -Wall file.c
- gcc -Wextra file.c
- gcc -Wstrict-overflow=5 file.c
- gcc -Wuninitialized file.c
- gcc -save-temps file.c

Правильный ответ: gcc -Werror file.c.

 

Caga Tio (small-number)

Задание: Сколько будет 0.1 + 0.2 по стандарту IEEE 754 (Двойная точность)?

Правильный ответ: 0.30000000000000004.

 

«Незнакомец» (romans)

Задание: Переведите обратно из римской системы счисления в десятичную.

Правильный ответ: 54321.

 

Железнодорожный музей (unknown-string)

Задание: У вас есть файл. Ищите ответ внутри.

Правильный ответ: GOOD BOY.

Решение: Ответ находится с помощью команды `strings`.

 

Что-то не так (dublin-unixtime)

Задание: Нужно узнать код. Код - это дата и время определенного момента по дублинскому среднему времени. Подсказка к моменту: 1218184409.

Формат для ввода кода:

YYYY/MM/DD hh:mm:ss

Решение: Дано количество секунд, прошедших с POSIX-времени. Ответ — 2008/08/08 08:08:08.

 

Заброшенная станция (chess)

Задание: Нужно узнать код. Код - это слово, содержащееся в строке, которое получится, если обойти эту доску полностью конем. Клетки не должны повторяться.

Правильный ответ: EXCELLENT.

 

Библиотека храма Монсеррат (trinary-logic)

Задание: Выберите выражение, эквивалентное исходному.

((A&B)|C&(!A|B)|D)&!E

- (A&B&!E)|(!A&C&!E)|(C&B&!E)|(D&!E)
- (A&B&!E)|(!A&C&!E)|(C&B&!E)
- (A&B&!E)|(!A&C&!E)|(C&B&!E)|(C&!E)
- (D&B&!E)|(!A&C&!E)|(C&B&!E)|(A&!E)
- (D&B&!E)|(!A&C&!E)|(A&B&!E)
- (A&B&!E)|(C&B&!E)|(D&!E)

Правильный ответ: (A&B&!E)|(!A&C&!E)|(C&B&!E)|(D&!E).

 

Сломанная флешка (utf-dev)

Задание: Найдите в файле ответ и введите его в строку ниже.

Правильный ответ: SO COOL.

Решение: Дан файл в кодироке UTF-9. Его просто нужно перевести из UTF-9 в свою любимую.

 

Дворец Каталонской музыки (three-one-four-dev)

Задание: У вас есть файл. В нём дан ответ в явном виде. Введите его с точкой в строку ниже.

Правильный ответ

Решение: В URL дана подсказка. В процессе гугления можно найти  [πfs] - https://github.com/philipl/pifs.
Если немного её потестировать, то можно предположить, что файл `answer` — это файл с метаданными для неё, положить этот файл в директорию для метаданных и прочитать ответ из точки монтирования.

 

Вы очнулись (game)

Задание

Есть двумерная карта в файле /test и кодировкой UTF-8.

У вас есть 100 очков здоровья и 0 очков усталости в начале карты.

Переход на клетку может добавлять/отнимать очков в зависимости от типа клетки.

Легенда карты

Нужно найти самый легкий путь (минимум очков усталости) и вывести одной строкой список действий, который приведет нас к конечной точке. Перевод строки в конце обязателен.

Список действий:

U - Движение вверх

D - Движение вниз

R - Движение вправо

L - Движение влево

Примеры:

Файл test

######
#SX C#
####F#
######

Правильный ответ:

RRRD

Решение: Нужно написать алгоритм поиска путей во взвешенном графе.