Разбор заданий по стенографии с DC78422 CTF0
Данное описание подготовлено и публикуется со слов создателя этих заданий – Sergey Nord (@rottenmechanism). Дальше текст передается as-is.
1) Наше путешествие начинается с QR кода
переходим по нему и попадаем на https://telegra.ph/Wake-up-Neo-07-05
2) внимательно осмотрев страницу видим 2 пути:
Самый очевидный - перейти по ссылке под картинкой с кроликом на drive.google.com/file/d/1LVzPeTM4njooOSCJ5QqCSEZ-8e4v9rkz
и второй менее очевидный - спрятанная ссылка на https://pastebin.com/84WBMkVg
в нижнем подчёркивании после знака вопроса. Сначала пройдём по первому пути
3) Проходим на гугл диск и видим ту же картинку с кроликом, скачиваем её и начинаем анализировать
4)Открываем картинку текстовым редактором и в конце видим:
flag{F0llowTh3WhiteR4bbit}
уу, первый флаг
А также продолжение в виде HEX кода
68 74 74 70 73 3A 2F 2F 74 69 6E 79 75 72 6C 2E 63 6F 6D 2F 79 65 36 37 34 61 38 38
5) Делаем преобразование HEX->ASCII и получаем https://tinyurl.com/ye674a88
ссылка ведёт на гугл диск с архивом, скачиваем и получаем Z1ON.rar
6) Архив запаролен, стандартные не подходят и брут не эффективен, пока что оставим его и порешаем второй путь
7)Переходим на pastebin и видим строку cGJieGE6Ly9rdGtzLnpjLzM0Y1o4VAo=
очевидно это base64, декодируем и получаем pbbxa://ktks.zc/34cZ8T
8) Похоже на ссылку, но перепутаны буквы, воспользуемся шифром Цезаря ROT8 https://clck.ru/34uR8L
9) Ссылка ведёт на картинку на том же гугл диске, скачиваем её
10) Из названия файла получаем flag{TimeT0Tak3TheR3dPill}
а на ней самой видим подсказку, что в случае необходимости нам нужно воспользоваться кодами доступа в Зион
11) Гуглим коды 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 0, 1, 3, 4, 7, 11, 18, 29, 47, 76, 0, 1, 4, 5, 9, 14, 23, 37, 60, 97, 0, 1, 5, 6, 11, 17, 28, 45, 73, 118, 0, 1, 6, 7, 13, 20, 33, 53, 86, 139, 0, 1, 7, 8, 15, 23, 38, 61, 99, 160, 0, 1, 8, 9, 17, 26, 43, 69, 112, 181, 0, 1, 9, 10, 19, 29, 48, 77, 125, 202, 0, 1, 10, 11, 21, 32, 53, 85, 138, 223
которые представляют собой последовательность Фибоначчи и распаковываем архив Z1ON.rar
12)Получаем 1tp.png
- это половинка qr кода, она горизанально отражена, на что намекают квадраты разметки и название файла, зеркалим.
13) У обычного человека возник бы закономерный вопрос: где вторая половинка, нужно бы её найти, но не у одного нашего героя, даже с большой буквы Героя - Избранного, NNeo, как мы его окрестили, он не стал искать вторую часть, а решил восстановить то что есть, но об этом в конце райтапа
14) Вспоминаем что у нас ещё есть картинка со вторым флагом и подсказкой к зиону, прогоняем её бинволком и видим, что она содержит в себе RAR архив
15) Меняем расширение на RAR и открываем. внутри вторая часть qr кода.
16) Соединяем части воедино и переходим на финальную страницу https://telegra.ph/Congratulation-that-is-all-07-05
с последним флагом flag{_M4trix_Has_Y0u_Neo_}
Готово, вы восхитительны!
Страница всячески намекает нам что на ней больше ничего нет, но особо пытливые в итоге найдут своё предназначение^^
Но знаете, есть избранный, который прошел этот квест по-своему и далее его цитата, а этим избранным был
Альберт Эйнштейнучастник, занявший 4 место в нашем CTF Victor Ryabinin
1) сначала прошел по qr
2) открыл ссылку под картинкой внизу (скрытую сначала не заметил)
3) скачал картинку, нашел через strings первый флаг и ссылку на архив
4) к архиву пробовал набрутить простые пароли, не получилось, фразы из фильма - тоже мимо, нашел пароль который вводила тринити в одной из частей Z10N0101
, не прошло, загуглил коды доступа в зеон - прокатило, получил пнг - нижнюю часть картинки
5) смотрю -картинка обрезанная, “ага”, старый трюк с изменением высоты - поправил высоту до 1023, но нет, скрытой второй части не оказалось
6) ок, что если вся инфа в нижней части QR кода, а в верхней ничего нет? идем на https://merri.cx/qrazybox/
, выбираем размер, начинаем рисовать - какая-то ерунда, большой и малый квадрат поменяны местами, ок, отражаем по вертикали, квадраты на месте, похоже на правду
7) черным и белым помечаем клетки которые известны, (то что версия 3 и L кодировка тоже выясняем походу, отмечая квадраты в правом верхнем углу, запускаем анализ
Error Correction log :
Show
Decoding Error :
Show
Back to editor
QR version : 3 (29x29)
Error correction level : L
Mask pattern : 3
Number of missing bytes (erasures) : 30 bytes (42.86%)
Data blocks :
["01000011","00110110","10000111","01000111","01000111","00000111","00110011","10100010","11110010","11110111","01000110","01010110","11000110","01010110","01110111","00100110","00010010","11100111","00000110","10000010","1111????","????????","????????","????????","????????","????????","????????","???00111","01010110","11000110","00010111","01000110","10010110","11110110","1110????","????????","????????","????????","????????","????????","????????","???10111","00110010","01010110","00010110","11000110","11001100","00110001","0000????","????????","????????","????????","????0000","11101100","00010001","???11011","00100100","00110000","10101000","11000000","100?????","????????","????????","???00001","11110001","10110100","010?????","????????","????????","???11110"]
----------------Block 1----------------
Reed-Solomon Block : [67,54,135,71,71,7,51,162,242,247,70,86,198,86,119,38,18,231,6,130,0,0,0,0,0,0,0,0,86,198,23,70,150,246,0,0,0,0,0,0,0,0,50,86,22,198,204,49,0,0,0,0,0,236,17,0,36,48,168,192,0,0,0,0,241,180,0,0,0,0]
Final data bits :
01000011001101101000011101000111010001110000011100110011101000101111001011110111010001100101011011000110010101100111011100100110000100101110011100000110100000100000000000000000000000000000000000000000000000000000000000000000010101101100011000010111010001101001011011110110000000000000000000000000000000000000000000000000000000000000000000110010010101100001011011000110110011000011000100000000000000000000000000000000000000001110110000010001
[0100] [00110011] [011010000110111010001101110100011011100000110111001100100111010001001011110010010111101101110100011011001010110110110001101100101011011001110110111001001101100001001001011100110111000001101101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011011011000110110000101101110100011011010010110110111101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100100101011011000010110110110001101101100110110000110000001000000000000000000000000000000000000000000000000000]
Mode Indicator : 8-bit Mode (0100)
Character Count Indicator : 51
Decoded data : https://telegra.ph latio` %allÃ
Final Decoded string : https://telegra.ph latio` %allÃ
Error :
- Too much missing bits
получилось
h??p??//te?????.ph/????????latio????????s-all-?????
ок, ссылка похожа на https://telegra.ph/
в конце у них идет номер месяца и число статьи, т.е.
https://telegra.ph/????????latio????????s-all-07-0[5-9]
число от 07-05
(дата старта квеста до 07-09, когда был первый прошедший квест)
далее идем на https://www.nayuki.io/page/creating-a-qr-code-step-by-step
, генерируем qr код по известной части фразы, медленно и кропотливо переносим букву за буквой (буквы в qr кодах идут кривыми блоками)
8) запускаем анализатор, получаем
https://telegra.ph/????????lation???????s-all-07-0?
не сильно много это дало, возможно это опять фраза из фильма?
качаем субтитры 4-х частей матрицы и грепаем по lation
получили: simulation, congratulations, population, о, congratulations вроде как как раз подходит по маске, ок, предположим
https://telegra.ph/congratulation???????s-all-07-0?
поздравляем, это все? что, ж, звучит правдоподобно,
9) дальше чисто муки перебора вариантов
congratulations-thats-all
, не подходит,congratulations-that-is-all
- не влазит, хмм, а что если не “поздравляем, это все”, а “поздравление, это все?”
проверяем congratulation-that-is-all
и все даты, результат: https://telegra.ph/congratulation-that-is-all-07-05
10) закрались сомнения что именно так надо было проходить квест, пишем разрабам квеста и узнаем что оказывается была вторая часть qr кода в картинке для второго ключа, проверяем binwalk и находим архив, спрятанный в картинке с другой половиной QR кода