В продолжение серии материалов по решению CTF-турниров из разных стран хочу рассказать о недавно прошедшем BYUCTF 2024 от организаторов из университета Бригама Янга. А также о bcactf 5.0 от академии округа Берген, который ориентирован на школьников старших классов. Оттого будет интересно узнать, чем сейчас живут старшеклассники, которые увлекаются информационной безопасностью.

В рамках статьи покажу решение нескольких заданий из разных категорий: OSINT, Misc, Forensic и Web. Некоторые могут показаться простыми, ведь в этой подборке задачи с турниров для старшеклассников и студентов. Если вы считаете, что CTF — это сложно и непонятно, надеюсь, что мои обзоры смогут вселить в вас уверенность. Поехали!

Meet Greg


Задание


CTF-задачи социальной инженерии сложно создать! К счастью, мой друг Грег согласился помочь немного попрактиковаться. С тех пор, как мы были детьми, он использовал один и тот же пароль для всего. Ваша задача — узнать его.

Решение


Я уже ранее встречал такие задания. Как правило, на стороне организаторов запущен ChatGPT или аналог, у которого нужно выпытать флаг. Если спрашивать напрямую, то он не выдаст секрет. Поэтому нужно завуалированными фразами, косвенно касающимися секрета, узнать целевую информацию.

В этот раз диалог с Грегом был коротким. Объясняю Грегу, что работаю над драйвером для видеокарты. Разговоры про ядро Линукса цепляют его! После чего прошу дать совет по наилучшему паролю для использования в качестве ключа.



Общение с Грегом (ChatGPT).

Отлично — мы обманули Грега и заполучили флаг!

Флаг: byuctf{!dJustl1ke2int3rj3ct4Amoment}



Mail Time


Задание


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

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


Вложение к заданию.

Решение


Рама окна точно совпадает с исходной картинкой, как и вывеска. Похоже, что задача довольно простая и можно по названию офиса идти искать в Google.

В задании есть оговорка об английском языке, поэтому в переключаю в картах язык на английский, ищу по названию и получаю результат:


Готово — флаг в кармане.

Флаг: byuctf{845P+98W, Ross Rd, Stanley FIQQ 1ZZ, Falkland Islands (Islas Malvinas)}

Petrol Head


Задание


Когда истекает срок регистрации этого автомобиля? MJ05 XRL.

Решение


В этот раз нужно узнать дату истечения срока регистрации автомобильного номера. Решение не заставляет себя долго ждать.

Ищу базы автомобильных номеров и нахожу ресурс. Это сайт компании, которая позволяет следить за уплатой налогов, страховки и другими данными по регистрационному номеру.


Достаточно вбить номер автомобиля — и флаг найден!

Флаг: byuctf{01/12/25}

Vacation Boats


Задание


Во время моей недавней вылазки в лазурные объятия отпускного блаженства, среди поцелованных солнцем берегов и лазурных волн возникло величественное судно, которое запечатлело суть морского великолепия. Увы, его имя ускользает от моей памяти. Мимолетный шепот, затерянный в морском бризе…


Вложение к заданию.

Решение


На изображении я зацепился за две детали.

  • Тип корабля. Авианосец, на мой взгляд, узнается довольно просто по высокой плоской палубе и отставленной в сторону мачте.
  • Флаг Франции.

После иду искать авианосцы Франции, На самом деле, был удивлен, что их относительно немного. Но из ныне эксплуатируемых можно найти Charles de Gaulle — он то нам и нужен, потому что является флагом.

Chalkboard Gag


Задание


Мэтт Гренинг прислал мне неиспользованную доску для рисования мелом. Он сказал, что внутри есть что-то особенное.

Решение


В приложенном файле находятся 100 тыс строк. С помощью автозамены удаляю строку «I WILL NOT BE SNEAKY» и переносы. В Notepad++ это можно сделать с помощью Ctrl+H.

В итоге получаю такую последовательность:


Видно, что в этих строках есть отличные символы. В каждой оставляю по одному уникальному, склеиваю в одну последовательность — и получаю флаг.

Флаг: bcactf{BaRT_W0U1D_B3_PR0uD}

Phone number


Задание


Я пытался войти на этот сайт, но теперь он просит номер телефона. Странный способ ввода. Можете мне помочь? Мой номер телефона: 1234567890.

Страница: http://challs.bcactf.com:32268

Решение


Из задания ясно, что ждет игра в кости! Если покликать на кнопки, можно понять, как устроена система.

  • Нажатие на Roll Dice выдает новое значение на костях и записывает сумму выпавших значений.
  • Нажатие на Subtract Dice меняет результат с суммы значений костей на разность.
  • Нажатие на Add Number добавляет результат броска в текст-бокс.
  • Нажатие на Submit отправляет результат на бэкенд, который проверяет значения.

В задании указан номер 1234567890. Вероятно, для получения флага необходимо отправить именно его. Важно заметить, что значение текст-бокса не редактируется.

В исходниках страницы доступен код JavaScript. без Попробую на основе данных отправить номер. Для этого необходимо сформировать вбить его в текст-боксе и отправить на бэкенд:


Далее нужно перехватить запрос. Например, с помощью proxy burpsuite:


Вижу, что обращение идет к URI /flag, а сформированный номер отправляется в теле запроса. Пробую заменить этот номер на 1234567890 и получаю флаг!


Флаг: bcactf{PHoN3_num8eR_EntER3D!_17847928}

Sea Scavenger


Задание


Отправьтесь в путешествие по морским глубинам! Исследуйте тайны веб-страниц и найдите спрятанное сокровище. Совет от профессионала: уменьшите масштаб!

Страница: http://challs.bcactf.com:31314

Решение


Перехожу на страницу и вижу огромную страницу с разрешением 8 000 х 7 400 px. Форм и кнопок не нашел — перехожу в код страницы. Скриптов нет, отключенных элементов тоже. Однако вижу шесть ссылок с картинками:


Уже есть за что зацепиться, поэтому начинаю переходить по ссылкам.

1. На странице http://challs.bcactf.com:31314/shark есть подсказка для поиска флага. Иду в код страницы и вижу первую часть флага:


1/6 флага: bcactf{b3

Погружаюсь глубже. Открываю адрес http://challs.bcactf.com:31314/squid и в коде страницы втжу подключенный скрипт, внутри которого — вторая часть флага.

console.log("You found it! Here’s the second part of the flag: \"t_y0u_d1\"");

2/6 флага: bcactf{b3t_y0u_d1

Это только начало… Ничего не остается, кроме как нырять дальше — по адресу http://challs.bcactf.com:31314/clam.


Сладкое лакомство — похоже на отсылку к кукисам. В консоли выполняю document.cookie:

> document.cookie
< ‘flag part 3:=dnt_fln’

3/6 флага: bcactf{b3t_y0u_d1dnt_f1n

По всей видимости флаг достаточно длинный. Сюжет с морскими приключениями интересный, но уже начинает затягиваться… Иду дальше и начинаю изучать затонувший корабль: http://challs.bcactf.com:31314/shipwreck.


В коде страницы есть JavaScript с подсказкой:

console.log("Hint: Check the response headers");
console.log("Also make sure to check \"/shipwreck\"");

Если посмотреть ответ сервера, можно увидеть заголовок с четвертой частью флага:


4/6 флага: bcactf{b3t_y0u_d1dnt_f1nd_th3_tr

Нельзя расслаблять ласты, конец уже близко. На глубине http://challs.bcactf.com:31314/whale встречает кит:


Здесь ничего интересного: пятая часть флага закомментирована в скрипте страницы.


5/6 флага: bcactf{b3t_y0u_d1dnt_f1nd_th3_tre4sur3

Наконец, по адресу http://challs.bcactf.com:31314/treasure нахожу сокровище:


Здесь тоже все просто: последняя часть флага находится в robots.txt.


Полный флаг: bcactf{b3t_y0u_d1dnt_f1nd_th3_tre4sur3_t336e3}

Заключение


Как видите, задачи такого уровня тоже могут быть интересными. Если только начинаете участвовать в CTF, подобные турниры точно будут полезными. Посмотрим, что покажут другие организаторы.

Возможно, эти тексты тоже вас заинтересуют:

Как я сделал свою Arduino
Не статья, а позорище какое-то! Sentiment-анализ комментариев из блога Selectel на Хабре
Летние одноплатники: как для любителей DIY-проектов, так и для промышленности

Комментарии (0)