Квест №1 от BlackFan’a

web-quest Получив немного свободного времени, решил немного подразмять извилины и смекалку. И очень удачно подвернулся квест BlackFan’a (ссылко на квест).

Здесь идет описание квеста и фрагменты его прохождения. Если Вы хотите пройти его сами, то не читайте дальше.

 

 

 

 

 

Квест представляет собой 10 заданий по возрастанию сложности (кроме некоторых). Итак:

Первый уровень.Что в нем может быть сложного?) Смотрим исходник страницы и в комментарии видим base64. Раcкодируем его и получаем ключ на второй уровень.
Второй. Дан хитрый текст:

yd. ekrpat t.fxrape co ab .pirbrmcj any.pbayck. yr yd. nafrgy jrmmrbnf urgbe rb yfl.,pcy.po abe jrmlgy.po tbr,b ao ',.pyfv yd. ',.pyf t.fxrape ,ao e.ocib.e cb yd. 1870 yr ajjrmmreay. yd. onr, m.jdabcjan mrk.m.by ru .apnf yfl.,pcy.pov ,d.b cy ,ao e.ocib.ew yrgjd yflcbi ncy.pannf dae bry .k.b x..b ydrgidy ru f.y! cy co dapenf ab .uucjc.by e.ocib urp yreafo go.v xf jrbypaoyw yd. ekrpat t.fxrape ,ao e.ocib.e ,cyd .mldaoco rb yflcoy jrmurpyw dcid lpregjyckcyf abe .ao. ru n.apbcbi [ cy-o mgjd .aoc.p yr n.apb! yd.p. ,.p. o.k.pan kapcaycrbo cb yd. ekrpato e.ocib cb cyo ucpoy u., e.jae.ow xgy yd.o. ,.p. o.yyn.e ,d.b yd. am.pcjab baycrban oyabeapeo cboycygy. allprk.e a oyabeape urp yd. nafrgy ru yd. ekrpat cb 1982v yd. laoo,rpe yr yd. b.qy n.k.n [ ekrpattx

Ответ в нем. Буквы в тексте поменяли местами. Алгоритм по которому меняли — две существующие раскладки для клавиатуры (одна — со времен пищущих машинок, другая — более новая и ориентирована под компьютеры). Ответ — правильно расшифрованное последнее слово.
Третий. При загрузке страницы нас просят ввести пароль (скрипт js). Естественно его мы не знаем. Но ведь JS можно в исходнике посмотреть! Смотрим и видим:

<script src="JavaScript">
// Код
</script>

Никакого намека на ответ… А если внимательнее посмотреть? Ведь src же указан! Смотрим по ссылке и видим совсем страшный код:

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___+$._+$.__+"\\"+$.$$$+$.$_$+"\\"+$.__$+$.$$_+$.___+"\\"+$.__$+$.$$_+$._$_+$._$+"\\"+$.__$+$.$_$+$.$_$+"\\"+$.__$+$.$$_+$.___+$.__+"(\\\"\\"+$.__$+$._$_+$.___+$.$_$_+"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$._$$+"\\"+$.__$+$.$$_+$.$$$+$._$+"\\"+$.__$+$.$$_+$._$_+$.$$_$+"\\"+$.$$$+$._$_+"\\\",\\\"\\\")\\"+$.$$$+$._$$+"\\"+$.__$+$.$_$+"\\"+$.__$+$._$_+"\\"+$.__$+$.$_$+$.__$+$.$$$$+" (\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.___+$._+$.__+"!\\"+$.$$$+$.$_$+"\\\""+$.__+"\\"+$.__$+$.$$_+$._$_+$._$+(![]+"")[$._$_]+$._$+(![]+"")[$._$_]+$._$+"\\\") {\\"+$.__$+$.$_$+"\\"+$.__$+$._$_+"  "+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.$_$+$.$$_+$._$+"\\\")\\"+$.$$$+$._$$+"\\"+$.__$+$.$_$+"\\"+$.__$+$._$_+"}\\"+$.__$+$.$_$+"\\"+$.__$+$._$_+$.$$$_+(![]+"")[$._$_]+"\\"+$.__$+$.$$_+$._$$+$.$$$_+" {\\"+$.__$+$.$_$+"\\"+$.__$+$._$_+"  "+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.$$$+$.__$+$.$$$_+"\\"+$.__$+$.$$_+$._$$+"\\\")\\"+$.$$$+$._$$+"\\"+$.__$+$.$_$+"\\"+$.__$+$._$_+"}"+"\"")())();

Глядя на это становится грустно… Приходится разбирать этот код. Перед предпоследней «;» ставим «alert(«, а перед последней «;» убираем пару скобок и ставим «)». Дальше увидеть требуемый ответ не составит труда.
Четвертый. Хм.. нам письмо 🙂 В нем говорится, что кто то нашел у себя на компьютере странный файл. И прислали его нам. Отправитель — Mark Z. (COM@fakemail.ru). Смотрим структуру файла (а он без расширения) и понимаем, что почтовый адрес отправителя дан нам не просто так. Переименуем файл в strange_file.com и запустим его. Вот он — наш ответ!
Пятый. Вот он кошмар… Brainfuck во всей своей красе:

>++++++++++[<++++++++>-]<+++++.>++++++[<+++++>-]<.>++[<------->-]<.>+++[<++++>-]<+.----.>+++[<---->-]<-.>+++[<++++>-]<.>++[<---->-]<.>++++[<---------->-]<---.[-]>+++++++++[<++++++++++++>-]<++++>>+++++++++[<+++++++++++>-]<-->>++++++++++[<++++++++++++>-]<----->>+++++++++[<+++++++++++++>-]<++>>+++++++++[<+++++++++++>-]<+>,.-->,.+>,.>,.++++>,.>>>++++++++[<++++>-]<>>++++++++++[<+++++++++>-]<--->>+++++++++++[<++++++++++>-]<++++>>+++++++++++[<++++++++++>-]<+>>+++++++++++[<++++++++++>-]<>>++++++++++[<++++++++++>-]<+++>>++++++[<+++++>-]<+++>+>>++++++++[<++++>-]<>>++++++++++[<+++++++>-]<--->>+++++++++++[<++++++++++>-]<+>>+++++++++++[<++++++++++>-]<++++>>+++++++++++[<++++++++++>-]<++++>>++++++++++[<++++++++++>-]<+>>++++++++++[<++++++++++>-]<->>+++++++++++[<++++++++++>-]<++++++>>++++++[<+++++>-]<+++<<<<<<<<<<<<<<<<<<<<<<[<<<<<->>>>>-]<<<<<[>>>>>>>>>>+<<<<<<<<<<[-]]>>>>>>+[<<<<<->>>>>-]<<<<<[>>>>>>>>>+<<<<<<<<<[-]]>>>>>>--[<<<<<->>>>>-]<<<<<[>>>>>>>>+<<<<<<<<[-]]>>>>>>[<<<<<->>>>>-]<<<<<[>>>>>>>+<<<<<<<[-]]>>>>>>-----[<<<<<->>>>>-]<<<<<[>>>>>>+<<<<<<[-]]>>>>>>[>.>.>.>.>.>.>.>-<<<<<<<<[-]]>>>>>>>>[>.>.>.>.>.>.>.>.>.<<<<<<<<<[-]]

Что тут сказать… Можно транслировать BF в РНР, можно взять отладчик… Выходов все равно два: либо найдете ответ, либо нет. В ответе только буквы нижнего регистра (лат.) и знак «_».
Шестой. После BF этот уровень выглядит как то сильно просто… Всего то rot13 и мы получим необходимую нам ссылку. А вот по этой ссылке лежит архив с текстовым файлом на 2Мб… Править его вручную резона нет. Не забываем про rot13. С файлом тоже самое. Скрипт из пары строк все сделает за нас. Хм… в получившемся html-файле табличка. Но вот в ее ячейках ничего нет, а значит ячейки не отображаются. Это не проблема. В секцию head добавляем:

<style type="text/css">
td {
	width: 1px;
	height: 1px;
}
</style>

И все! Теперь ясно видно, что хотел сказать автор)
Седьмой. Видим ссылку на PHP-скрипт. В нем формочка и текст скрипта, который обрабатывает эту формочку:

ini_set("register_globals","1");
$passwdToNextLevel = '*******************';
$config['login']='BlackFan';
$config['password']='*******************';
if(isset($_POST['log']) &amp;&amp; isset($_POST['pas']) &amp;&amp; $_POST['log'] == $config['login'] &amp;&amp; $_POST['pas'] == $config['password']) {
	echo "Go to the next level ".$passwdToNextLevel;
}

Здесь нас интересует установка register_globals равным 1. Если передать скрипту через get config=1 (все равно чему равное), то получится, что элементы массива будут равны одному символу. Ну а один символ подобрать — не проблема).
Восьмой. Просто java-игра. Устанавливаем и смотрим. Копать надо в сторону азбуки Морзе. Ответ вводить с пробелами!
Девятый. И снова PHP скрипт и форма ввода. Но вот тут уже проще. Смотрим код обработчика формы. Берем строку с запросом выборки и идем в Гугл. И находим массу положительных результатов! (http://cvk.posterous.com/sql-injection-with-raw-md5-hashes — один из них) А почему Гугл так много знает о девятом уровне? Да потому что, это задачка c CTF 2010.
Десятый. Вот он.. Последний. Сколько времени было потрачено на предидущие уровни. И сколько будет потрачено на этот 🙂 Нам дают архив. Открываем его и видит там текстовый файл. Смотрим его. Но там нету ничего, что бы могло натолкнуть на ответ. Берем Notepad++ и просто открываем ним архив. И что же мы видим? Первая строчка — PNG. Значит это картинка. Поменяем расширение файла на png. Видим картинку с красным кругом (red dot). А если теперь снова архиватором открыть? Открываем и видим 2.tEXt. В нем нам прямо говорят, что где то рядом есть еще и 1.tEXt. И его нам надо найти…Скажем так.. Надо поменять один символ из nul на 1. И мы получим файл 1.tEXt, а в нем и ответ на последний вопрос!
И вот она — таблица победителей:
Таблица победителей

, , ,

1 comment
  1. aze Said:

    O_o
    Bravo , Kronus.

Оставить комментарий

Top ↑ | Main page | Back