Привет, читатель! Раз ты изучаешь рубрику «Взлом», то, наверное, неплохо разбираешься во всяких уязвимостях вроде SQL-инъекций, XSS и тому подобных. Может быть, ты даже и сам увлекаешься взломами сайтов, обожаешь заливать шеллы, порабощать сервера… Но как же это иногда может надоесть! В этот момент очень хочется отвлечься от однообразной деятельности и заняться чем-нибудь интересным.

Мы с моим приятелем приготовили тебе необычное развлечение, которое еще и полезно – ты сможешь узнать много новых вещей, о которых раньше просто не думал, но которые вполне пригодятся тебе в жизни. Это необычный IT-квест, расположенный по ссылке http://kaimi.ru/quest. Он отличается от стандартных хак-квестов: мы тебя не будем заставлять подбирать поля к тем же надоевшим SQL, или искать их в HTML-коде. Задания очень разнообразны, и повторов почти нет.

На момент написания статьи в квесте было зарегистрировано около 600 человек, но пройти его смогли только 21. Говорит нам это только о том, что многие люди очень ограниченно и стандартно мыслят или просто не умеют искать нужную информацию в интернете. Разумеется, человек может называть себя Хакером за исключительную смекалку и способность к нестандартному мышлению. Хочешь попробовать свои силы – заходи по адресу выше, регистрируйся и начинай прохождение. А в этой статейке мы распишем решения всех заданий, которые вошли в квест, и пусть они послужат тебе подсказками.

Думаю, пояснять, как зарегистрироваться в квесте, смысла нет. Стоит лишь набрать в консоли команду help и получить подробный список доступных действий. Итак, поехали!

 

Уровень 0

  • Автор: dx
 

Решение

Ну, это даже и не уровень. Это просто некоторая тренировка работы с консолью квеста. Достаточно ввести в консоль команду ans и какой-либо ответ, пусть даже неправильный, через пробел, и квест выдаст нам верный ответ. Остается лишь использовать его и оказаться на первом уровне.

 

Уровень 1

  • Автор: Kaimi
 

Решение

Первый уровень мы сделали для разминки, и даже странно, что так много людей не смогло его пройти. Это просто кроссворд с небольшим количеством вопросов, а ответы на них прекрасно ищутся через Google. Проблема при прохождении возникала в тот момент, когда все слова уже отгаданы. После этого предлагается из букв, расположенных в красных клетках кроссворда, составить слово. Вот здесь-то многие и не могли сообразить, хотя слово действительно элементарное – генератор. Это и есть пароль к уровню 2.

 

Уровень 2

  • Автор: Kaimi
 

Решение

Этот уровень также представляет собой не совсем хакерское задание. Тебе выдается картинка, разбитая на 16 квадратов. Чтобы собрать ее, нужно сыграть в «пятнашки». Хотя, конечно, ты мог бы заметить, что квадраты расположены подряд по именам, и сборка картинки сводится к расположению частей по порядку в любом графическом редакторе. Но это еще не все – нам требуется узнать, что изображено на этой картинке. Если мы введем неправильный ответ с помощью команды ans, то получим небольшую подсказку – можно ведь воспользоваться сервисом Tineye.com! В любом случае, задание несложное, ответ – Вавилон или Babylon.

 

Уровень 3

  • Автор: Kaimi
 

Решение

«Расслабляющие» уровни подошли к концу, и теперь тебе придется поднапрячь мозги, чтобы пройти дальше. Ты получишь PHP-скрипт, из которого требуется извлечь пароль, вернее, ввести в форму скрипта необходимую строку, чтобы он этот пароль выдал. Не все так просто – скрипт обработан обфускатором от dx :). Но рано пугаться – начнем разбираться! Открываем скрипт в блокноте и видим неразборчивый треш. В общем-то, сразу понятно, что исходник накрыт base64, и чтобы просмотреть его содержимое, необходимо заменить все инструкции eval на print и выполнить скрипт – после этого зашифрованный код расшифруется и мы увидим его в браузере в изначальном виде.

Но и сейчас нас встречают исковерканные имена переменных и функций, зашифрованные строки… И снова необязательно разбираться во всем этом, нужно лишь понять общую логику скрипта. Как сказано в задании, скрипт ожидает от нас некоторую строку, которую он сочтет правильной и выдаст нам пароль к четвертому уровню. А это значит, что следует лишь «прибить» эту проверку, чтобы скрипт выводил пароль всегда. Присмотревшись к коду, видим два if’а. Первый проверяет, было ли введено что-то в форму, а второй – это как раз та самая проверка. Заменяем все огромное второе условие на true, сохраняем код как php-файл, не забыв дописать <?php и ?> в начало и конец, запускаем скрипт и вуаля – теперь он выдаст пароль в любом случае, что бы мы ни напечатали в поле ввода!

 

Уровень 4

  • Автор: Kaimi
 

Решение

Разобравшись с PHP, переходим на уровень 4. Здесь нас ждет модифицированный ROM игры «Чип и Дейл» для Dendy, который специально для тебя приготовил Kaimi. В задании к уровню написано, что, пройдя несколько уровней в игре, мы найдем пароль – нам сообщит его Гаечка. И это является самым простым путем прохождения, не нужно даже особо напрягаться, стоит лишь немного побегать в игрушке и ни в коем случае не пропускать диалоги с персонажами. Но есть и другой путь… Kaimi ведь как-то этот ROM смог изменить, а значит, ты сможешь узнать пароль, не играя в игру!

Хакерское решение: Тебе потребуется Hex-редактор, поддерживающий кастомные таблицы символов (соответствие код-символ). Проще всего воспользоваться редактором Hexposure. Открываем интересующий нас ROM в эмуляторе Nesticle, ищем момент в игре, где используется какой-либо текст (например, меню в начале игры). В меню эмулятора выбираем просмотр палитры, там отобразятся используемые в данный момент спрайты игры. Нажимаем курсором на спрайты с буквами и цифрами – появляется окно с шестнадцатеричным представлением этого символа.

Далее необходимо составить таблицу соответствий, например:

80=0
81=1
8A=A
...

и сохранить ее в файл с расширением tbl. Затем берем ROM, открываем его в Hexposure, выбираем в меню загрузку кастомной таблицы символов и загружаем созданную нами таблицу. После этого можно воспользоваться поиском по тексту или вручную проматывать содержимое ROM’а, чтобы найти строки, используемые в игре.

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

Кстати, Гаечка нам пароль в открытом виде все-таки не скажет :). Она продиктует нам несколько символов и сообщит, что следует их «XOR BY 0X03». Если ты не знаешь, что такое XOR, проще всего забить это слово в любой поисковик или прочитать статью на Вики. Узнав, что это операция «исключающее или», и прочитав подсказку к квесту, которая, как обычно, вылазит при вводе неверного ответа на задание, мы поймем, что к каждому символу, который продиктовала Гаечка, необходимо применить эту самую операцию. Например, на PHP это будет выглядеть так:

<?php
$string = 'пароль от Гаечки';
for($i = 0, $len = strlen($string); $i < $len; $i++)
print chr(ord($string[$i]) ^ 0x03);
?>

Запускаем скрипт, получаем пароль и переходим к следующему заданию.

 

Уровень 5

  • Автор: Kaimi
 

Решение

Да-да, это снова обфускация, но на этот раз скрипт на Perl’е. Копируем код скрипта и пробуем запустить его в консоли, но он просто завершается, ничего не выводя. Опять, как в третьем уровне, меняем eval на print и получаем какой-то странный вывод. Тут может сначала показаться, что пароль к скрипту – «lame», но если мы это слово передадим как аргумент командной строки, то снова ничего не получим. Здесь стоит обратить внимание на строчку ‘369Y9RLj73YWTiX4W7D7460Wxj1Kkp4b6f7A4mbTWmw5sfnAnmHEZUA3VndW’ ^ ‘CDP7Mrn6Yp631SxV6M-YSWl9ZJX-CTu0q0lqiMDrwI6g405q3M-4zr1D8IMl’ – похоже, тут что-то зашифровано, и для расшифровки используется уже знакомый XOR. Создаем скрипт, который будет выводить эту строку с помощью оператора print, сохраняем его с расширением pl, запускаем из командной строки и получаем ответ: print "\nCode: bazinga\n" if($ARGV[0] && $ARGV[0] eq ‘pwn’);
Становится ясно, что пароль к следующему уровню – bazinga.

 

Уровень 6

  • Автор: dx
 

Решение

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

 

Уровень 7

  • Автор: dx
 

Решение

Теперь немного C++. Тебе выдается исходный код, в нем нужно поправить ошибки, чтобы получить пароль. Ошибок здесь всего три:

#include "windows.h"

void main()
{
DWORD ans = 0;
char pass[] = {'T', 'r', 'o', 'l', 'o', 'l', 'o', 0};
int (*lol)(const char*, ...) = printf; //Здесь используется функция printf, которая нигде не определена.
//Набрав ее имя в поисковике, определим, что не хватает строки #include "stdio.h"
//Поставим ее после #include "windows.h"
for(char * i = pass; *i != 0; *i ^= *(i+++1));
for(size_t i = 0, i < 8; ans += pass[i++]); //Тут вместо точки с запятой после i = 0 стоит запятая
lol("%X\r\n", ans *= 2) //А тут пропущена точка с запятой после вызова функции
}

После исправления ошибок компилируем программу в любом компиляторе и получаем ответ – 17C.

 

Уровень 8

  • Автор: Kaimi
 

Решение

В этом задании тебе предлагается посмотреть короткий SWF-ролик и отыскать в нем пароль. Сразу же появляется мысль о скрытых кадрах, и эта мысль верна. Как же их просмотреть? Простейший вариант – открыть флешку в Media Player Classic и пролистать ее до конца. Более сложный – воспользоваться какой-либо программой для декомпиляции flash, например, Sothink SWF Decompiler’ом – пароль указан на фрейме 28.

 

Уровень 9

  • Автора: dx
 

Решение

Здесь тебе придется столкнуться с видеороликом, в котором каким-то образом спрятан пароль. Тут все донельзя просто – стоит лишь открыть видеоролик в Блокноте и пролистать его в самый конец. Там находится приписанный код для перехода на следующий уровень.

 

Уровень 10

  • Автор: dx
 

Решение

Этот уровень рассчитан на написание небольшого количества кода. У тебя есть rar-архив с именем 500.rar, внутри которого лежит 499.rar, внутри которого – 498.rar, и так до 0.rar, в котором лежит заветный текстовик с паролем. Конечно, ты можешь упорно распаковывать все это вручную (а каждый архив еще и запаролен, пароль на все архивы такой же, как пароль перехода на этот уровень). Но можно просто написать батник, и он все сделает за тебя. Вот пример:

@echo off
for /L %%i in (500,-1,0) do call :arch %%i
exit /b

:arch
set a=%1

rar x -r -pspielberg %a%.rar
del %a%.rar"

exit /b

Запускать его нужно из директории WinRAR’а, положив туда же файл 500.rar; через пару минут там же окажется файлик password.txt с ответом.

 

Уровень 11

  • Автор: dx
 

Решение

На этом уровне тебе дадут прослушать небольшой звуковой файл. Никаких паролей в конце не имеется, поэтому остается лишь догадаться, что это осмысленный текст, перевернутый задом наперед. Используем какой-нибудь софт, чтобы повернуть звук обратно (например, SoundForge), слушаем его и получаем код.

 

Уровень 12

  • Автор: Kaimi
 

Решение

Этот уровень сложнее предыдущих. Ты увидишь картинку с непонятным рисунком, и будет предложено определить, что же это такое. Вероятно, ты уже и так угадал, что это QR-код, если же нет – можно попробовать найти ответ, используя все тот же Tineye или сервис поиска картинок от Google, задав такие же размеры картинки как у той, которую тебе выдали, и введя в строку поиска «qc» – имя нашего изображения. Воспользовавшись каким-нибудь онлайн-дешифратором QR-кодов (например, zxing.org/w/decode.jspx), получим слово «RAR!». Пробуем сменить расширение файла картинки на rar, открываем в WinRAR’е и видим, что к изображению на самом деле прикреплен архив с документом, в котором записан пароль! Почему в конец изображения можно дописать RAR-архив, при этом и картинка, и архив будут открываться нормально? Дело в том, что в заголовке PNG-файла уже записана длина файла изображения, и все, что идет дальше, не интересует графические редакторы и просмотрщики. А WinRAR просто ищет свой заголовок по всему телу файла и начинает распаковку с того места, где заголовок нашелся, поэтому данные изображения его также не волнуют.

 

Уровень 13

  • Автор: dx
 

Решение

Вот и настал черед исполняемого файла. Но и здесь все не так сложно, как кажется на первый взгляд – ничего дизассемблировать не требуется. Думаю, тебе известно, что очень многие exe-файлы используют секцию ресурсов для хранения своей служебной информации (строки, формы, иконки и т.д.). Здесь тот же самый случай. Открываем файл в любом редакторе или просмотрщике ресурсов, например, в известном Resource Hacker’е, и сразу замечаем таблицу строк, в которой и лежит нужный пароль.

 

Уровень 14

  • Автор: dx
 

Решение

Это задание, как и уровень со стереокартинкой, является уникальным для каждого. Для перехода на последний уровень нужно решить простую задачку: необходимо взять свой никнейм, с которым ты зарегистрировался в квесте, сложить все ASCII-коды символов, из которых он состоит, после чего рассчитать остаток от деления получившегося значения на сотню, а потом сдвинуть получившееся число влево на два бита – это будет ответом. Не буду давать комментариев к этому уровню, он и так очень простой. Скажу только, что операция сдвига влево эквивалентна умножению на два. Соответственно, сдвиг на два бита – это умножение числа на 4. Подробнее об операциях с битами ты сможешь прочитать в интернете, информации очень много.

 

Уровень 15

  • Автор: Kaimi
 

Решение

Пожалуй, это самый сложный уровень в квесте, хотя, если ты знаешь ответ, то сможешь пройти его за пару минут. Здесь снова exe-файл, который при запуске играет какую-то композицию. Предлагается определить, из какой игры эта музыка взята. Если ты введешь в консоль квеста неправильный ответ, то увидишь подсказку: NES US 89. Как видно, она говорит о том, что игра эта была издана на NES в США в 1989 году. Непростой вопрос, но решаемый, даже если ты понятия не имеешь, о чем речь. Достаточно зайти на Википедию и найти на ней список всех игр NES (ru.wikipedia.org/wiki/Список_игр_для_NES/). После этого последует перебор всех позиций с 1989 годом выхода, и, наконец, ты найдешь ее – Ninja Gaiden. Перебирать ключ к exe брутфорсом, думаю, смысла не имеет, потому что в программе используется достаточно криптостойкое шифрование.
После ввода правильного названия программа выдаст пароль для завершения квеста.

 

Финал

Можно тебя поздравить – ты справился с заданием и достоин награды! Надеемся, что ты использовал наши подсказки по минимуму, а если и использовал, то открыл для себя много нового и интересного.

На этом дело, кстати, не заканчивается; не так давно мы с Kaimi смастерили второй квест, который расположен здесь: kaimi.ru/quest_x2/.

Решения его пока что в открытом виде нет, так что дерзай! Уровни в нем очень разнообразные, как и в этом квесте, сложность на этот раз нарастает постепенно, а еще я добавил туда помощника, который намекнет тебе, как пройти каждый уровень, если ты его об этом попросишь :). Удачи тебе в прохождении и саморазвитии!

Оставить мнение

Check Also

Конкурс хаков: делаем рекурсивный поиск по файлам в каталогах при помощи grep и регулярок

Для рекурсивного поиска по файлам в директории удобно использовать grep. Многие с ним, как…