![](https://habrastorage.org/webt/rs/r0/ge/rsr0gemc6df_vyo6t3ubyzdck7k.png)
В продолжение серии материалов по решению CTF-турниров из разных стран хочу рассказать о недавно прошедшем BYUCTF 2024 от организаторов из университета Бригама Янга. А также о bcactf 5.0 от академии округа Берген, который ориентирован на школьников старших классов. Оттого будет интересно узнать, чем сейчас живут старшеклассники, которые увлекаются информационной безопасностью.
В рамках статьи покажу решение нескольких заданий из разных категорий: OSINT, Misc, Forensic и Web. Некоторые могут показаться простыми, ведь в этой подборке задачи с турниров для старшеклассников и студентов. Если вы считаете, что CTF — это сложно и непонятно, надеюсь, что мои обзоры смогут вселить в вас уверенность. Поехали!
Meet Greg
Задание
CTF-задачи социальной инженерии сложно создать! К счастью, мой друг Грег согласился помочь немного попрактиковаться. С тех пор, как мы были детьми, он использовал один и тот же пароль для всего. Ваша задача — узнать его.
Решение
Я уже ранее встречал такие задания. Как правило, на стороне организаторов запущен ChatGPT или аналог, у которого нужно выпытать флаг. Если спрашивать напрямую, то он не выдаст секрет. Поэтому нужно завуалированными фразами, косвенно касающимися секрета, узнать целевую информацию.
В этот раз диалог с Грегом был коротким. Объясняю Грегу, что работаю над драйвером для видеокарты. Разговоры про ядро Линукса цепляют его! После чего прошу дать совет по наилучшему паролю для использования в качестве ключа.
![](https://habrastorage.org/webt/t_/qa/xj/t_qaxjcxmaswz7hojrbesbix7xa.png)
![](https://habrastorage.org/webt/zi/et/z9/zietz9xbfoc4hqcnxjlzfkkqqr0.png)
Общение с Грегом (ChatGPT).
Отлично — мы обманули Грега и заполучили флаг!
Флаг: byuctf{!dJustl1ke2int3rj3ct4Amoment}
![](https://habrastorage.org/webt/nb/lo/t_/nblot_ve1t3hcw5bluwc_-did08.png)
Mail Time
Задание
В складках памяти фотография хранит ключ к адресу, который скрыт за пеленой времени. Однако в этом изображении лежит путь к жизненно важной корреспонденции. С вашей помощью мы расшифруем скрытые координаты, чтобы убедиться, что наше сообщение достигнет своего предполагаемого адресата в почтовом отделении.
Если вы считаете, что адрес указан правильно, а ваш родной язык не английский, пожалуйста, откройте тикет. Введите флаг как точный адрес, указанный в картах Google.
![](https://habrastorage.org/webt/po/ph/um/pophumnozqtmxxfuckjimzasasg.png)
Вложение к заданию.
Решение
Рама окна точно совпадает с исходной картинкой, как и вывеска. Похоже, что задача довольно простая и можно по названию офиса идти искать в Google.
В задании есть оговорка об английском языке, поэтому в переключаю в картах язык на английский, ищу по названию и получаю результат:
![](https://habrastorage.org/webt/e6/pp/si/e6ppsixhnqntstdsj8awepcbmvi.png)
Готово — флаг в кармане.
Флаг: byuctf{845P+98W, Ross Rd, Stanley FIQQ 1ZZ, Falkland Islands (Islas Malvinas)}
Petrol Head
Задание
Когда истекает срок регистрации этого автомобиля? MJ05 XRL.
Решение
В этот раз нужно узнать дату истечения срока регистрации автомобильного номера. Решение не заставляет себя долго ждать.
Ищу базы автомобильных номеров и нахожу ресурс. Это сайт компании, которая позволяет следить за уплатой налогов, страховки и другими данными по регистрационному номеру.
![](https://habrastorage.org/webt/xa/tx/oi/xatxoitfoogfofm72nggvlbhbp4.png)
Достаточно вбить номер автомобиля — и флаг найден!
Флаг: byuctf{01/12/25}
Vacation Boats
Задание
Во время моей недавней вылазки в лазурные объятия отпускного блаженства, среди поцелованных солнцем берегов и лазурных волн возникло величественное судно, которое запечатлело суть морского великолепия. Увы, его имя ускользает от моей памяти. Мимолетный шепот, затерянный в морском бризе…
![](https://habrastorage.org/webt/pz/d5/9v/pzd59vx49gjrelfwozmhue8asvs.png)
Вложение к заданию.
Решение
На изображении я зацепился за две детали.
- Тип корабля. Авианосец, на мой взгляд, узнается довольно просто по высокой плоской палубе и отставленной в сторону мачте.
- Флаг Франции.
После иду искать авианосцы Франции, На самом деле, был удивлен, что их относительно немного. Но из ныне эксплуатируемых можно найти Charles de Gaulle — он то нам и нужен, потому что является флагом.
Chalkboard Gag
Задание
Мэтт Гренинг прислал мне неиспользованную доску для рисования мелом. Он сказал, что внутри есть что-то особенное.
Решение
В приложенном файле находятся 100 тыс строк. С помощью автозамены удаляю строку «I WILL NOT BE SNEAKY» и переносы. В Notepad++ это можно сделать с помощью Ctrl+H.
В итоге получаю такую последовательность:
![](https://habrastorage.org/webt/bz/jn/sc/bzjnsc7wwydf-nor07hf97idqja.png)
Видно, что в этих строках есть отличные символы. В каждой оставляю по одному уникальному, склеиваю в одну последовательность — и получаю флаг.
Флаг: bcactf{BaRT_W0U1D_B3_PR0uD}
Phone number
Задание
Я пытался войти на этот сайт, но теперь он просит номер телефона. Странный способ ввода. Можете мне помочь? Мой номер телефона: 1234567890.
Страница: http://challs.bcactf.com:32268
Решение
Из задания ясно, что ждет игра в кости! Если покликать на кнопки, можно понять, как устроена система.
- Нажатие на Roll Dice выдает новое значение на костях и записывает сумму выпавших значений.
- Нажатие на Subtract Dice меняет результат с суммы значений костей на разность.
- Нажатие на Add Number добавляет результат броска в текст-бокс.
- Нажатие на Submit отправляет результат на бэкенд, который проверяет значения.
В задании указан номер 1234567890. Вероятно, для получения флага необходимо отправить именно его. Важно заметить, что значение текст-бокса не редактируется.
В исходниках страницы доступен код JavaScript. без Попробую на основе данных отправить номер. Для этого необходимо сформировать вбить его в текст-боксе и отправить на бэкенд:
![](https://habrastorage.org/webt/wk/no/hq/wknohqyd4zn6uxtbkpdltfmbepm.png)
Далее нужно перехватить запрос. Например, с помощью proxy burpsuite:
![](https://habrastorage.org/webt/bc/wo/nr/bcwonrg7wdahvx9nibpilujw8mk.png)
Вижу, что обращение идет к URI /flag, а сформированный номер отправляется в теле запроса. Пробую заменить этот номер на 1234567890 и получаю флаг!
![](https://habrastorage.org/webt/uv/iv/qy/uvivqyxzenpktglppihoyuk8yrw.png)
Флаг: bcactf{PHoN3_num8eR_EntER3D!_17847928}
Sea Scavenger
Задание
Отправьтесь в путешествие по морским глубинам! Исследуйте тайны веб-страниц и найдите спрятанное сокровище. Совет от профессионала: уменьшите масштаб!
Страница: http://challs.bcactf.com:31314
Решение
Перехожу на страницу и вижу огромную страницу с разрешением 8 000 х 7 400 px. Форм и кнопок не нашел — перехожу в код страницы. Скриптов нет, отключенных элементов тоже. Однако вижу шесть ссылок с картинками:
![](https://habrastorage.org/webt/tn/2a/wf/tn2awfdl-mhb0lfr-ubnewdlnrg.png)
Уже есть за что зацепиться, поэтому начинаю переходить по ссылкам.
1. На странице http://challs.bcactf.com:31314/shark есть подсказка для поиска флага. Иду в код страницы и вижу первую часть флага:
![](https://habrastorage.org/webt/9r/up/k9/9rupk9v77jhebfl8hulqjjzy1l8.png)
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.
![](https://habrastorage.org/webt/pk/qj/ro/pkqjrolq1nqudbjgbcacxvuejpw.png)
Сладкое лакомство — похоже на отсылку к кукисам. В консоли выполняю document.cookie:
> document.cookie
< ‘flag part 3:=dnt_fln’
3/6 флага: bcactf{b3t_y0u_d1dnt_f1n
По всей видимости флаг достаточно длинный. Сюжет с морскими приключениями интересный, но уже начинает затягиваться… Иду дальше и начинаю изучать затонувший корабль: http://challs.bcactf.com:31314/shipwreck.
![](https://habrastorage.org/webt/gv/vj/ie/gvvjieprfz3xe10r6k83d7ju2vy.png)
В коде страницы есть JavaScript с подсказкой:
console.log("Hint: Check the response headers");
console.log("Also make sure to check \"/shipwreck\"");
Если посмотреть ответ сервера, можно увидеть заголовок с четвертой частью флага:
![](https://habrastorage.org/webt/mo/5q/mc/mo5qmcncac5egykwhaajrxs-pbu.png)
4/6 флага: bcactf{b3t_y0u_d1dnt_f1nd_th3_tr
Нельзя расслаблять ласты, конец уже близко. На глубине http://challs.bcactf.com:31314/whale встречает кит:
![](https://habrastorage.org/webt/wn/ll/h1/wnllh1e_po-5l6gycfqbo2gse3m.png)
Здесь ничего интересного: пятая часть флага закомментирована в скрипте страницы.
![](https://habrastorage.org/webt/ss/ra/kd/ssrakdd8ws0sldx_gmfaut1hyyc.png)
5/6 флага: bcactf{b3t_y0u_d1dnt_f1nd_th3_tre4sur3
Наконец, по адресу http://challs.bcactf.com:31314/treasure нахожу сокровище:
![](https://habrastorage.org/webt/b5/ab/ss/b5abssfznz7wtnpf6sxt-fquin8.png)
Здесь тоже все просто: последняя часть флага находится в robots.txt.
![](https://habrastorage.org/webt/qy/wr/rp/qywrrp7fjt5hlul1zl9awi0hif8.png)
Полный флаг: bcactf{b3t_y0u_d1dnt_f1nd_th3_tre4sur3_t336e3}
Заключение
Как видите, задачи такого уровня тоже могут быть интересными. Если только начинаете участвовать в CTF, подобные турниры точно будут полезными. Посмотрим, что покажут другие организаторы.
Возможно, эти тексты тоже вас заинтересуют:
→ Как я сделал свою Arduino
→ Не статья, а позорище какое-то! Sentiment-анализ комментариев из блога Selectel на Хабре
→ Летние одноплатники: как для любителей DIY-проектов, так и для промышленности