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

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

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

Таски решать тут: @writeup_ctf_bot
Download Telegram
writeup_sploit.py
671 B
#pwn #kasperskyctf2025
Kaspersky{CTF} - flag-what-where, 50 points от @tonysdx

💡 Идея:
Бинарник считывает флаг на stack через функцию fgets, а затем затирает его с помощью memset.
После этого у нас есть 3 попытки прочитать произвольные байты памяти по заданному адресу, после чего программа завершается.

👹 Уязвимость:
Функция fgets, как и многие другие функции из glibc, при чтении строки из stdin использует буферы на heap.
Поэтому часть флага можно найти в heap-памяти.

Почему только часть, а не весь флаг?
Потому что fgets освобождает буфер после завершения работы, и первые N байт затираются служебными данными.

Кроме того, бинарник собран без PIE, так что вычислить необходимые смещения не представляет труда.

💉Эксплуатация:
1. Помещаем cyclic(128) в файл flag.txt, патчим бинарник на использование тех же библиотек, что и в docker-контейнере, и запускаем в gdb.
2. Используем команду search -t bytes "aaaa".
3. Находим участок heap, где лежит часть флага, и вычисляем смещение от начала сегмента heap.
4. Получаем leak libc через GOT-table, leak heap из main_arena, и читаем данные по рассчитанному на шаге 3 смещению.

📝 Заметки:
Сначала я думал, что придётся искать первую часть флага, которая затирается, где-то еще. Но организаторы предусмотрели это: весь флаг оказался доступен в heap.
Я просто вычел 16 из изначально вычисленного смещения и получил полный флаг.

💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
112🔥1
writeup_sploit.py
771 B
#pwn #kasperskyctf2025
Kaspersky{CTF} - Translator, 50 points от @tonysdx

💡 Идея задачи:
Бинарник читает 16 байт из /dev/random, вычисляет их хэш с помощью SHA512, затем XOR'ит байты флага с этим хэшем, выводит результат и предлагает угадать флаг.
При этом у нас есть всего 10 попыток для ввода правильного ответа.

👹 Уязвимость:
1. В функции main есть off-by-one уязвимость в scanf, что позволяет перезаписать счётчик попыток нулевым байтом и тем самым получить неограниченное количество попыток.
2. Бинарник никогда не закрывает файловые дескрипторы, поэтому их можно открывать сколько угодно.
3. В функции read_file индекс файлового дескриптора приводится к типу int8.

💉 Эксплуатация:
1. Сначала открываем 255 файловых дескрипторов, используя первые две уязвимости.
2. Когда бинарник откроет 256-й дескриптор, downcast превратит его индекс в 0, и чтение произойдёт не из /dev/random, а из stdin.
3. Теперь бинарник будет вычислять SHA512 не от случайных байтов, а от нашего ввода.
4. Достаточно передать константную строку (например, b"A" * 16), вычислить её SHA512-хэш (или просто вынуть его из отладчика), а затем сделать XOR байтов вывода программы и байтов известного хэша — и мы получаем флаг.

💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥42
public-rock-n-rollback.tar.gz
953.6 KB
#pwn
rock-n-rollback 🪓

Теперь нет необходимости запоминать указатели и вызывать free!

45.12.114.80:32002


Автор: @s41nt0l3xus

После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта.

Зеркало тасков

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot

#таск@writeup_ctf

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
6
public-undefined-pointer.tar.gz
952 KB
#pwn
undefined-pointer
🧑‍💻

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

45.12.114.80:32000


Автор: @s41nt0l3xus

После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта.

Зеркало тасков

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot

#таск@writeup_ctf

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Подборка райтапов с прошедшего AlfaCTF:

Задания кстати все еще доступны
https://alfactf.ru/tasks

🛡 Защита от спама
(https://t.iss.one/writeup_ctf/784)
#Easy #Infra #Web

🎶 Звуки ностальгии
(https://t.iss.one/writeup_ctf/783)
#Easy #Misc #OSINT

🌊 Цунами дедлайнов
(https://t.iss.one/writeup_ctf/793)
#Easy #Web

🌈🎛 Кислотный ретровейв
(https://t.iss.one/writeup_ctf/786)
#Easy #Web

🌴💰 Пальма с биткоинами
(https://t.iss.one/writeup_ctf/785)
#Easy #Web #JS

👨‍💻🏖 Разработчик на пляже
(https://t.iss.one/writeup_ctf/790)
#Medium #Infra #Dev #Pentest

🎵🌀 Вихрь рик-ролла
(https://t.iss.one/writeup_ctf/789)
#Medium #Web #Logic

🐺🌊 Шакализация волны
(https://t.iss.one/writeup_ctf/788)
#Medium #Web #OAuth #Client

📹🚁 Десант блогеров
(https://t.iss.one/writeup_ctf/787)
#Medium #Web #Logic

🌇🛠 Фиксы в лучах заката
(https://t.iss.one/writeup_ctf/792)
#Hard #Forensics #Linux #Infra #LPE

🥒😈 Дикий огурец
(https://t.iss.one/writeup_ctf/791)
#Hard #Pwn #Python

🏍⚡️ Непослушный мотоциклист
(https://t.iss.one/writeup_ctf/795)
#Hard #Coding #Reverse #Network

🧱🔙 Возвращение стены
(https://t.iss.one/writeup_ctf/794)
#Hard #Web #Client

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