Блог Сергея Попова
163 subscribers
95 photos
2 videos
96 links
Блог создателя codeby
Download Telegram
🪪 У чата HackerLab теперь есть лицо!

Кликни на ник или аватарку собеседника прямо в чате — и откроется его карточка: уровень и ранг, место в рейтинге, сколько задач и CTF решено, активность на форуме. Тут же можно написать в личку, подписаться или заглянуть в полный профиль — в один клик.

Чат всегда под рукой: на главной — бейджем в правом нижнем углу, а на страницах задач открыт сразу. Залетай, знакомься со своими 👇

🔗 hackerlab.pro
👍31🔥1
Пять команд в терминале вместо двадцати минут в Wireshark: как решать network-таски на CTF

Пока кто-то кликает по меню Statistics → Protocol Hierarchy в графическом интерфейсе, три флага уже улетают в скорборд. На KnightCTF 2024 пять задач из категории networking решались чистым tshark — без единого запуска GUI.

🔍 Первое действие с любым pcap-файлом — не открывать Wireshark, а набрать:

strings capture.pcap | grep -i "flag{"

Подставляешь формат флага из условия (KCTF{...}, flag{...}, ctfa{...}) и в части задач получаешь ответ за одну секунду. Флаг нередко лежит в открытом виде прямо в трафике — организаторы закладывают это намеренно.

Если не сработало — второй шаг: смотрим распределение протоколов.

tshark -r capture.pcap -q -z io,phs

На выходе — дерево с процентами. Видишь 95% HTTP и крошечную долю FTP или странные DNS-запросы? Вот туда и копай. Аномалия в протокольном распределении — почти всегда указатель на флаг.

Три главных места, где прячут флаги в HTTP-трафике:

• GET-параметры URL — что-то вроде /page.php?secret=flag{abc}
• POST-тело — формы логина, загрузка файлов
• Нестандартные заголовки ответа — X-Flag, X-Secret-Data

Отдельная история — заголовок Authorization: Basic. Встретил строку вроде dXNlcjpwYXNz? Это Base64. Декодируешь одной командой: echo "dXNlcjpwYXNz" | base64 -duser:pass. В CTF-задачах Base64 встречается повсюду: HTTP-заголовки, поддомены DNS, тело FTP-передач.

🕵️ DNS exfiltration — ещё один классический паттерн. Атакующий кодирует данные в поддоменах DNS-запросов: ZmxhZ3s.evil.com. Выглядит как обычный резолв, а на деле — канал утечки. Кстати, flag{ в Base64 выглядит как ZmxhZ3s — запомни этот паттерн, он экономит время на каждом втором соревновании.

Что касается FTP — протокол передаёт логины и пароли открытым текстом. Если в pcap есть FTP-сессия, креды достаются элементарно. Фильтруешь по ftp.request.command == "PASS" — и вот они.

📌 Минимальный набор для старта:

tshark — фильтрация, follow stream, экспорт объектов
strings + grep — быстрый поиск по бинарнику
base64 — декодирование на лету
binwalk -e — извлечение вложенных файлов (картинки, архивы, документы)

Всё это есть в любом Linux из коробки. Kali — вообще без доустановки. RAM от 4 ГБ, сеть не нужна, pcap-файлы на CTF редко превышают 50 МБ.

Когда GUI всё-таки нужен? Файлы от 500 МБ с десятками тысяч потоков, визуальный анализ ретрансмиссий и временных диаграмм. Но на типичном CTF — терминал быстрее.

В полной статье — пошаговый разбор реальных задач с KnightCTF и CTF Academy: follow stream через CLI, извлечение файлов из трафика и декодирование DNS-эксфильтрации. Забирай в закладки 👇

https://hackerlab.pro/blog/setevoy-analiz-ctf-razbiraem-http-ftp-i-dns-v-trafike-i-dostaem-flag-bez-wireshark-ekspert
👍21🔥1
🔍 Неделя 4 — Финал: Секретный кабинет

Последняя неделя серии «Сетевая разведка за 30 дней» — и сразу 500 очков.

Маршрут к цели известен. Нужен пароль. Всё, что изучали три недели — сейчас в одной цепочке:

nmap → gobuster → Burp Repeater → hydra

Разведка, directory enumeration, разбор auth-формы, брутфорс. Именно так выглядит реальный engagement.

⏱️ Старт: 23 июня, 10:00 МСК
🏁 Дедлайн: 28 июня, 23:59 МСК

Флаги до старта — в конкурсе не учитываются. До дедлайна обсуждаем подходы, не конкретные пути.

После 29 июня — финальный wrap-up серии, лучшие writeup'ы и что будет дальше.

👉 Неделя 4 — Финал: Секретный кабинет
👍1
Три символа, которые ломают авторизацию: как JWT-атаки решают CTF-задачи

На одном из CTF я потратил 40 минут на веб-задачу — перебирал эндпоинты, пробовал SQLi, ковырял параметры. А решение уместилось в три символа: none в поле alg JWT-заголовка и пустая подпись. Флаг пришёл мгновенно.

JWT — это строка из трёх частей через точку: header.payload.signature. Header говорит серверу, каким алгоритмом проверять подпись. Payload хранит данные о пользователе в открытом виде — никакого шифрования, просто base64url. Signature гарантирует, что никто не подменил содержимое. В теории.

На практике разработчики допускают ошибки в валидации, и вот три атаки, которые чаще всего встречаются в CTF:

🔓 1. alg:none — самая простая и самая недооценённая. Меняем алгоритм в header на "alg":"none", правим payload (например, "role":"admin"), убираем подпись, оставив финальную точку. Если сервер не проверяет алгоритм строго, он примет токен без подписи вообще. В jwt_tool это одна команда: python3 jwt_tool.py TOKEN -X a.

🔑 2. Брутфорс слабого секрета. Алгоритм HS256 использует один симметричный ключ для подписи и проверки. Если разработчик поставил пароль вроде secret, password123 или qwerty — его можно подобрать за секунды. hashcat с режимом 16500 и словарём rockyou.txt перебирает миллионы вариантов в секунду на GPU. Нашёл ключ — подписываешь любой payload и заходишь как admin.

3. Algorithm confusion — уровень посложнее. Сервер ожидает RS256 (асимметричная пара ключей), но атакующий переключает заголовок на HS256 и подписывает токен публичным ключом сервера как HMAC-секретом. Публичный ключ часто доступен — через /jwks.json или в исходниках. Сервер берёт тот же ключ для проверки и... подпись совпадает.

Где искать токен в задаче? Четыре места:

• Cookie — самый частый вариант (названия: jwt, token, session)
• Заголовок Authorization: Bearer ...
• Тело JSON-ответа после логина
localStorage в DevTools для SPA-приложений

Практический алгоритм на CTF: нашёл токен → декодировал header и payload → посмотрел alg → попробовал none → не сработало — запустил брутфорс секрета → проверил algorithm confusion. Три шага, которые закрывают 80% JWT-задач на соревнованиях.

По классификации OWASP, эти уязвимости попадают сразу под три категории Top 10: Broken Access Control, Cryptographic Failures и Security Misconfiguration. Не только CTF — реальные CVE тоже.

Полный разбор с командами и примерами — в статье на HackerLab.

https://hackerlab.pro/blog/jwt-ataki-ctf-ot-struktury-tokena-do-zahvata-flaga-cherez-alg-none-i-slabyy-sekret
👍21🔥1
Пустая страница Apache — и четыре минуты до флага

Представьте: вы подключаетесь к тренировочной машине на HackTheBox. Nmap показал единственный открытый порт 80, браузер — пустую страницу. Тупик. Одна команда gobuster dir со словарём common.txt — и через 35 секунд найден /robots.txt. Внутри — путь к админке. В исходном коде — забытые тестовые креды. Четыре минуты от запуска до флага. Без dirbusting эту машину можно было ковырять часами.

Перебор директорий — это первое, что делает пентестер после сетевого скана. Вы знаете, что порт открыт, но структура приложения — тёмный лес. Gobuster берёт словарь с типовыми именами путей, подставляет каждое в URL и анализирует HTTP-ответ. Просто, грубо, эффективно.

🔍 Что реально находят при dirbusting:

.env, config.php.bak, db_backup.sql — файлы с учётными данными, которые разработчик забыл убрать
• Директории .git/ и .svn/ — раскрывают исходный код проекта
• Панели phpMyAdmin без пароля, Tomcat Manager с дефолтными tomcat:tomcat
• Забытые веб-шеллы вроде cmd.php — прямой путь к RCE

По данным Verizon DBIR 2025, около 26% подтверждённых утечек приходится на атаки на веб-приложения. Немалая часть начинается именно с обнаружения эндпоинтов, которые никто не планировал показывать миру.

⚙️ Gobuster написан на Go, потребляет минимум памяти и работает быстро. В Kali Linux он предустановлен — просто набираете gobuster в терминале. Словари SecLists ставятся одной командой: sudo apt install seclists. После установки они лежат в /usr/share/seclists/.

Лайфхак из практики: если ставите через go install, сразу пропишите export PATH=$PATH:$HOME/go/bin в .bashrc. Иначе после перелогина команда «пропадёт», и вы потратите минут пять на выяснение причин.

Режим dir — основной. В CTF-контексте 90% работы — именно он. Минимальная команда требует всего два параметра: URL цели и путь к словарю. Остальные режимы (dns, vhost, fuzz, s3) решают другие задачи и в веб-задачах встречаются реже.

📌 Для тренировки поднимите OWASP Juice Shop в Docker — уязвимое приложение с десятками скрытых эндпоинтов. Идеальный полигон, чтобы прощупать Gobuster без риска что-то сломать.

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

https://hackerlab.pro/blog/gobuster-perebor-direktoriy-i-poisk-skrytyh-faylov-v-veb-zadachah-ctf
👍2