Итоги квеста, который вы прошли. Или нет

Привет, Хабр!

Подводим итоги квеста от MBLT DEV 2018: разбираем задания и дарим подарки — билеты на конференцию, подписки на все продукты JetBrains и сертификаты Skyeng самым удачливым.


jyesal8obv3tvweuunflz05sqbw.png

Знаем, что вам пришлось поломать голову. Автор ваших мучений — damnerd. Рассказываем, что же он придумал, и как вы должны были решать задания.


Вход в квест

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


liwqftanb1a9cfim22yhpppqloe.png

Хотя некоторые ринулись записывать декоративные буквы из другой сцены:


ftny-_4efwhrhnmwjqecnehnzjc.png

Переписываем шифр и получаем: aHR0 cHM6 Ly9t Ymx0 ZGV2 LnJ1 L3J1 L3F1 aXo=

Увидев на конце знак =, моментально понимаем, что это строка, закодированная в формате base64. Недолго думая, выполняем

echo 'aHR0 cHM6 Ly9t Ymx0 ZGV2 LnJ1 L3J1 L3F1 aXo=' | base64 --decode

(либо гуглим base64 decode online) и получаем линк на вход в квест: https://mbltdev.ru/ru/quiz

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


Задание 1

Нужно было перейти по ссылке и написать, название какой команды мы оставили в подсказке. При переходе мы показали картинку:


66w2npr5r2xjjzxbvy8qn7nuuhy.png

Тут всё довольно просто: Source = исходный код. Смотрим, что в нём:


pcu-3sax4o3paf13780mpqa9z2a.png

Здесь мы не стали запутывать человека каким-либо обфусцированным кодом или чем-то подобным, а вместо этого на самом видном месте самым очевидным способом (словами коровы) выдали подсказку. Как оказалось, наша попытка привлечь внимание обернулась для некоторых наоборот отвлечением внимания от подсказки. Многие в качестве ответа на вопрос вводили команду cowsay, которая генерирует подобную ASCII-графику. Однако смотреть надо было именно на текст: It«s in the name. Dig it?! Имя команды было непосредственно в самой подсказке: dig. Собственно, имя команды мы и просили (потому что саму команду можно выполнить с одинаковым успехом при разном наборе параметров, а программисты ленивые и система проверки ответов глупая), так что это и было ответом на первый вопрос.


Задание 2

После выполнения команды «dig» нужно было увидеть подсказку, с помощью которой можно перейти к следующему шагу. Мы попросили написать её значение.

Возвращаясь к подсказке из прошлого задания, помимо слова dig, рядом стояло слово name, несущее в себе смысл domain name. Пососедству стоящие name и dig наводят на следующий шаг: необходимость поковырять (или покверить, если угодно) доменные записи для имени, где лежит страница с подсказкой. Конечно, по-умолчанию dig запрашивает A-запись, в которой ничего нет, кроме основной записи с IP-адресом. Надо было догадаться, что запросить необходимо TXT-запись:

> dig +nocmd +noall +answer q1.mbltdev.ru txt
q1.mbltdev.ru.       10108    IN    TXT    "quest@95.163.108.79:10022"

Либо загуглить dig online и воспользоваться простой веб-мордой, не читая маны по дигу:


efoz8ilbvhv2hjnwaoeti_6foec.png

Непосредственно значение этой текстовой записи и было как ответом на задание, так и подсказкой к следующему действию — зайти по SSH на хост 95.163.108.79 под пользователем quest на порт 10022: ssh quest@95.163.108.79 -p 10022.


Задание 3

Мы загадали ребус о том, что общего у Android и iOS. Попросили вычислить пароль и ввести его.

Многие писали, что это слишком сложно. Но это ребус в квесте, который никто не может пройти! Но вообще всё было в тексте, даже слово Parent.

Пересечение android и apple → OS
Прародитель их ОС → Unix
lowercase (Unix) → unix
sha1(unix) → d13bbbd92b83ddaad994a12bd9d20dfba5fff139

> echo -n "unix" | shasum
d13bbbd92b83ddaad994a12bd9d20dfba5fff139  -

Как обычно, можно было загуглить sha1 online и вычислить сумму, не отходя от кассы.


Задание 4

Всё, что понадобилось для выполнения этого задания, лежало в домашней директории. Мы просили получить следующую подсказку после введения пароля из Задания 3 и написать её значение.

На этом этапе многие хотели сдаться и писали нам гневные комменты, но в действительности всё было очень просто.


7c1097a5033063e01cc0534797f3a481.gif

В домашней директории лежит всего 4 файла, два из которых не при делах — .profile и .bashrc были почти полностью дефолтными для нового пользователя конфигами. Оставалось два файла с «пустым» названием. Кстати, даже SSH MOTD намекал на это своей фразой /\s/. Это не странный смайлик, а регулярное выражение для пробельного символа. В имени первого из файлов был символ обыкновенного пробела (U+0020: SPACE). Второго — необычный пробел из китайской письменности (U+3000 IDEOGRAPHIC SPACE).

У пользователей iTerm2 на Mac OS была дополнительная трудность: этот эмулятор не хотел копировать необычный пробел. Обычный Terminal без труда копировал символ, и можно было просто выполнять над ним команды простым ⌘C-⌘V. Но для пользователей кривых эмуляторов, а также любителей извращений, были и другие методы, например, сделать ls -li, чтобы узнать inode number файла, и дальше выполнять команды с помощью find:

find . -inum 660402 | xargs cat

Кстати, эта команда просто выплёвывает в терминал много пустых строк. Тут знающие люди сразу могли догадаться, что это листинг программы на языке Whitespace, загуглить whitespace interpreter online и получить следующую подсказку. Незнающие люди могли просто догадаться, что надо как-то совместить два файла, которые есть у них в распоряжении. Дополнительной подсказкой было, что один из этих файлов имеет флаг на исполнение (+x) и перловый шебенг. Так или иначе, выполнение программы выдавало ответ: http://q1.mbltdev.ru/q.webp


Задание 5

В четвёртом задании мы спрятали ссылку http://q1.mbltdev.ru/q.webp. В пятом нужно было перейти по ней и ответить на вопрос.

Финальное задание было простым для разрядки обстановки. По данному URL«у была картинка в формате tiff, сохранённая с разрешением webp. Некоторые умные графические просмотрщики открывали её без вопросов. Некоторые не открывали. Но достаточно было спросить того, кто знает:

> file q.webp
q.webp: TIFF image data
> mv q.{webp,tiff}

В самой же картинке был простой вопрос:


z82flwvpzfhuuorkoa5kq5msjs4.png

Ответ: 0. MBLT DEV всегда проходит в Москве. В этом году встречаемся 28 сентября.

Кстати, говорят, некоторые находили картинку обходным путём. Это было возможно, если пошариться по серверу из 4-го задания, потому что и страничка из первого задания, и картинка из последнего, и задания 3 и 4 хостились на одной машине (не забывайте про лень разработчиков). Если вкратце:

quest@questmblt2018:~$ grep root /etc/nginx/sites-enabled/quest
    root /var/www/html;
quest@questmblt2018:~$ ls /var/www/html/
index.html  index.nginx-debian.html  q.webp


Post Mortem

Кстати, о лени разработчиков: мы хоть и знали, что не обойдётся в подобном квесте без кулхацкеров, но поленились защититься от всех возможных проблем. Например, народ начал переписываться broadcast сообщениями, мешая другим проходить квест.


wgywz9i6w127tqqzgs3ccqo_sxk.png

Был какой-то умелец, который закачал на сервер 15 ГБ данных, исчерпав место на диске. Конечно же нашлись и скрипт-киддисы, запускавшие форк-бомбы, ломающие логин для других пользователей. Ну и не обошлось без «спам»-ботов, пытавшихся, зная правильные ответы, застолбить себе побольше шансов в финальной лотерее.

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


Подарки и победители

3070 человек попытались пройти квест. Мы получили 666 ответов, почистили читеров, в итоге с квестом успешно справились 297 человек. Среди них мы и разыграли основные подарки.

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


Билеты на конференцию мобильных разработчиков MBLT DEV 2018


Билеты получают Владислав Козлов, Дмитрий и Игорь.


Годовые подписки на любой продукт JetBrains


Подписки получают Павел Парфёнов, Вадим Скрипник и Андрей.


4 бесплатных занятия английским в онлайн-школе Skyeng


Сертификаты получают Сергей и Валентин.


2 бесплатных занятия английским в онлайн-школе Skyeng


Сертификаты получают Алексей и Евгений.

Остальным участникам квеста мы тоже отправили небольшие подарки. Проверяйте почты!


Встречаемся на MBLT DEV 2018

Конференция пройдёт 28 сентября в Москве. Участников ждут полезные доклады от разработчиков из Netflix, Uber, Revolut, Badoo и других компаний, нетворкинг и фан. Мы приготовили ещё несколько квестов с крутыми призами. Билеты доступны на сайте MBLT DEV.

© Habrahabr.ru