BYUCTF и bcactf: решение задач для студентов и школьников

BYUCTF и bcactf: пробуем задачи для студентов и школьников

Тирекс Тирекс Самый зубастый автор 11 июня 2024

Мы уже участвовали в CTF-турнирах для профессионалов. Самое время вернуться в школьные будни и наверстать упущенное.

Изображение записи

В продолжение серии материалов по решению 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, подобные турниры точно будут полезными. Посмотрим, что покажут другие организаторы.

Читайте также