КАК УЧИТЬСЯ С CTF
Уже как пару недель подряд участвую в CTF соревнованиях по выходным, но лишь во время CTF кубка россии, в полночь, решил поискать "как же всё же играть в стф и чему-то учиться".
Нашёл видео от LiveOverflow, рассказывающего методологию решения тасков:
- тыкаешь таск, записываешь свои мысли по решению и "что уже попробовал для решения"
- если решил, то ты крутой.
- если не решил, то жди writeup. по появлению райтапов, находи свой таск и сравнивай решение со своими заметками.
- - изучай технологии, добавляй записи в свои заметки и размышляй "как надо было думать, чтобы дойти до такого"
Сразу же применил и заметил за собой, что во время записывания мыслей при решении таска - мне проще получать общую картинку таска и понимать куда стоит копать.
Ранее я пытался решать стф на основе знаний в голове и своей базе знаний, но не мог сформировать общую картинку.
Полагаю, если постоянно следовать методологии и копить базу решенных тасков + свои мысли, то при встрече с новыми тасками - голова начнёт вспоминать уже встречавшиеся паттерны, решение которых можно будет подсмотреть в своих же заметках
UPD: видео, как ответ на вопрос "как писать заметки во время стф"
#ctf #guide
Уже как пару недель подряд участвую в CTF соревнованиях по выходным, но лишь во время CTF кубка россии, в полночь, решил поискать "как же всё же играть в стф и чему-то учиться".
Нашёл видео от LiveOverflow, рассказывающего методологию решения тасков:
- тыкаешь таск, записываешь свои мысли по решению и "что уже попробовал для решения"
- если решил, то ты крутой.
- если не решил, то жди writeup. по появлению райтапов, находи свой таск и сравнивай решение со своими заметками.
- - изучай технологии, добавляй записи в свои заметки и размышляй "как надо было думать, чтобы дойти до такого"
Сразу же применил и заметил за собой, что во время записывания мыслей при решении таска - мне проще получать общую картинку таска и понимать куда стоит копать.
Ранее я пытался решать стф на основе знаний в голове и своей базе знаний, но не мог сформировать общую картинку.
Полагаю, если постоянно следовать методологии и копить базу решенных тасков + свои мысли, то при встрече с новыми тасками - голова начнёт вспоминать уже встречавшиеся паттерны, решение которых можно будет подсмотреть в своих же заметках
UPD: видео, как ответ на вопрос "как писать заметки во время стф"
#ctf #guide
YouTube
How To Learn Hacking With CTFs
In this video I just want to explain how to approach CTFs for learning. It's not about solving challenges and not about winning.
CTFtime: https://ctftime.org/
What is CTF? An introduction to security Capture The Flag competitions: https://www.youtube.co…
CTFtime: https://ctftime.org/
What is CTF? An introduction to security Capture The Flag competitions: https://www.youtube.co…
Написал гайд на реверс шелл к локальному компьютеру с помощью ngrok aka ответ на вопрос "как подключиться к локальному компьютеру из внешней сети?"
https://telegra.ph/How-to-reverse-shell-using-ngrok-11-30
Был бы этот гайд был под рукой на прошедшей MireaCTF, то вошли бы в топ 10 команд. Впрочем, как раз для такого и нужен CTF - чтобы заполнять пробелы в знаниях
#ctf #guide
https://telegra.ph/How-to-reverse-shell-using-ngrok-11-30
Был бы этот гайд был под рукой на прошедшей MireaCTF, то вошли бы в топ 10 команд. Впрочем, как раз для такого и нужен CTF - чтобы заполнять пробелы в знаниях
#ctf #guide
Telegraph
Как подключиться к локальному компьютеру из внешней сети?
В чём проблема? Локальный компьютер находится в локальной сети, которая находится за NAT провайдера или фаерволом, не позволяющие подключиться внешним устройствам к локальным устройствам без внешнего (белого) IP-адреса. Обойти это можно с помощью утилиты…
whatis @hackthishit
Меня бесит мерцающий курсор, но больше всего меня бесят статьи и отчеты формата
Это неидеальный, и порой даже грубый, канал про offense / defense / dev веба, инфры и головы. Здесь будут повторяться недочеты, нестабильные скрипты, объяснения базы, шутки и явные screwups.
Хочу передавать знания, нежели показывать "step-by-step гайд по взлому тостера".хотя, взлом тостера звучит как неплохая статья
Маппинг хэштегов:
#guide = гайды
#tricks = техники
#invite = приглашаю тебя к соучастию в Х
#recon = разведка
#bypass = обходы СЗИ (WAF, AV, etc.)
#web = веб-приложения
#client_side
#server_side
#infra = инфраструктура
#mobile = мобилки, включая #android и #ios
#machineops = оптимизация работы за компом
#lifeops = как я упрощаю / усложняю себе жизнь
#aiops = как пользуюсь ИИ
#mindops = мысли и перестройка мыслительных процессов
#ctf = про захват флага на проде
#tool = занимательные инструменты (мои и чужие)
#ai = контент про ИИ
#teach = как обучать других
#me = инфа обо мне (привет осинтер)
Меня бесит мерцающий курсор, но больше всего меня бесят статьи и отчеты формата
я впервые вижу это, но знаю точно, что если отправить 0xYAA на предпоследний порт, то получу шелл
Это неидеальный, и порой даже грубый, канал про offense / defense / dev веба, инфры и головы. Здесь будут повторяться недочеты, нестабильные скрипты, объяснения базы, шутки и явные screwups.
Хочу передавать знания, нежели показывать "step-by-step гайд по взлому тостера".
Маппинг хэштегов:
#guide = гайды
#tricks = техники
#invite = приглашаю тебя к соучастию в Х
#recon = разведка
#bypass = обходы СЗИ (WAF, AV, etc.)
#web = веб-приложения
#client_side
#server_side
#infra = инфраструктура
#mobile = мобилки, включая #android и #ios
#machineops = оптимизация работы за компом
#lifeops = как я упрощаю / усложняю себе жизнь
#aiops = как пользуюсь ИИ
#mindops = мысли и перестройка мыслительных процессов
#ctf = про захват флага на проде
#tool = занимательные инструменты (мои и чужие)
#ai = контент про ИИ
#teach = как обучать других
#me = инфа обо мне (привет осинтер)
вольтаж
КАК УЧИТЬСЯ С CTF Уже как пару недель подряд участвую в CTF соревнованиях по выходным, но лишь во время CTF кубка россии, в полночь, решил поискать "как же всё же играть в стф и чему-то учиться". Нашёл видео от LiveOverflow, рассказывающего методологию…
ПРИМЕР ОТЧЁТА ПО РЕШЕНИЮ CTF
Ранее в канале, расписывал "как учиться с CTF", пересказывая ролик LiveOverflow, суть которого можно свести к "пиши отчёт по ходу решения". Вышло так, что все праздники решал CTF'ки для ШКИБ. Решил 4 задачи (1, 2, 5, 7) из 7. К каждой задаче писал отчёт по ходу решение, одним из которых хочу поделиться.
Отчёт по 7 задаче, суть которой в вызове Reflected XSS. Рекомендую сначала попробовать самостоятельно потыкать. Писал отчёт в Obsidian.
Зачем делюсь?
Чтобы ты мог использовать отчёт в качестве шаблона для своих отчётов или чтобы вдохновился наконец начать описывать ход решения задачки. Самое главное - пиши для себя.
Твои отчёты являются твоим потоком мыслей и должны помогать тебе. Их необязательно разъяснять кому-то. Главное, чтобы ты сам понял, что написал вчера. Этот отчёт изначально писался без мысли, что его будет читать кто-то ещё.
#ctf #guide #web #client_side
Ранее в канале, расписывал "как учиться с CTF", пересказывая ролик LiveOverflow, суть которого можно свести к "пиши отчёт по ходу решения". Вышло так, что все праздники решал CTF'ки для ШКИБ. Решил 4 задачи (1, 2, 5, 7) из 7. К каждой задаче писал отчёт по ходу решение, одним из которых хочу поделиться.
Отчёт по 7 задаче, суть которой в вызове Reflected XSS. Рекомендую сначала попробовать самостоятельно потыкать. Писал отчёт в Obsidian.
Зачем делюсь?
Чтобы ты мог использовать отчёт в качестве шаблона для своих отчётов или чтобы вдохновился наконец начать описывать ход решения задачки. Самое главное - пиши для себя.
Твои отчёты являются твоим потоком мыслей и должны помогать тебе. Их необязательно разъяснять кому-то. Главное, чтобы ты сам понял, что написал вчера. Этот отчёт изначально писался без мысли, что его будет читать кто-то ещё.
#ctf #guide #web #client_side
Простое управление .dotfiles через "bare" репозитории
dotfiles - конфигурационные файлы, чьи названия начинаются с точки (ex: .zshrc, .profile, .config).
Недавно решил перекинуть конфиги с хоста на пару виртуалок, но не хотелось костыльно и долго копировать файлы через расшаренную папку между виртуалками.
tl;dr: и нашёл метод "bare git репозитория". для реализации сначала надо запустить скрипт инициализации чистого репозитория, после можешь добавить .файлы к отслеживанию, далее commit, пуш, потом уже раскатывай на новой системе ещё одним скриптом.
Начал изучать как "нормально" управлять .файлами. Наткнулся на полноценный гайд с всевозможными трюками и туториалами по управлению, среди которых был гайд с использованием "чистых git репозиториев".
По сути, чистые репозитории - это репозитории без рабочего каталога и предназначенные для расшаривания файлов, нежели хранения в конкретном месте.
На том же Github, репозиторий с .файлами, использующий "чистые репозитории" будет выглядить как обычный. Однако, локальный "чистый репозиторий" не будет содержать в себе файлов. Он только знает какие файлы по системе отслеживать.
Благодаря этому подходу не нужно постоянно копировать измененные конфиги в единый локальный репозиторий, чтобы коммитнуть изменения.
Создание чистого репозитория и настройка оболочки
Использую zsh шелл, но если ты bashник, то замени .zshrc на .bashrc
Репозиторий будет в ~/.dotfiles. Для взаимодействия с ним определи алиас "config" и выключи отображение ещё не отслеживаемых файлов, иначе погрязнешь в перечислении файлов домашней директории
```shell
$ git init --bare $HOME/.dotfiles
$ echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
$ source .zshrc
$ config config --local status.showUntrackedFiles no
```Добавление файлов в репозиторий
```shell
$ config status
$ config add .vimrc .zshrc .config/tmux/tmux.conf
$ config commit -m "Add .vimrc, .zshrc and tmux.conf"
$ config remote add origin <remote-repo-url>
$ config push -u origin <branch>
```Если команда "config" не отрабатывает, то проверь применился ли алиас.
Если всё ок и команда успешно запушила репозиторий, то поздравляю с великолепием!
Теперь
Кроме того, на удаленном репозитории автоматически создатся структура до целевых .файлов, без надобности создавать директории для имитации пути.
Раскатывание .файлов на новой системе
```shell
mkdir -p .config-backup && \
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
xargs -I{} mv {} .config-backup/{}
```Теперь пробуй вновь
- если в ранее отслеживаемой папки добавились новые файлы, то новый файл или всю директорию понадобится добавить вновь к отслеживанию
- чтобы добавить в удаленный Github репозиторий README.md или дополнительные файлы, не относящиеся напрямую к dotfiles, то перенеси их в $HOME/.github, после чего добавь в отслеживание саму папку .github
— Github сам распарсит папку .github и отобразит README оттуда на главной странице репозитория
Источники
- snovvcrash - dotfiles and personalization
- articles, tools and tricks to manage dotfiles
- atlassian - how to manage dotfiles with bare git repo
- мои dotfiles для bspwm, picom, polybar, zsh, tmux и тд
#guide
dotfiles - конфигурационные файлы, чьи названия начинаются с точки (ex: .zshrc, .profile, .config).
Недавно решил перекинуть конфиги с хоста на пару виртуалок, но не хотелось костыльно и долго копировать файлы через расшаренную папку между виртуалками.
tl;dr: и нашёл метод "bare git репозитория". для реализации сначала надо запустить скрипт инициализации чистого репозитория, после можешь добавить .файлы к отслеживанию, далее commit, пуш, потом уже раскатывай на новой системе ещё одним скриптом.
Начал изучать как "нормально" управлять .файлами. Наткнулся на полноценный гайд с всевозможными трюками и туториалами по управлению, среди которых был гайд с использованием "чистых git репозиториев".
По сути, чистые репозитории - это репозитории без рабочего каталога и предназначенные для расшаривания файлов, нежели хранения в конкретном месте.
На том же Github, репозиторий с .файлами, использующий "чистые репозитории" будет выглядить как обычный. Однако, локальный "чистый репозиторий" не будет содержать в себе файлов. Он только знает какие файлы по системе отслеживать.
Благодаря этому подходу не нужно постоянно копировать измененные конфиги в единый локальный репозиторий, чтобы коммитнуть изменения.
Создание чистого репозитория и настройка оболочки
Использую zsh шелл, но если ты bashник, то замени .zshrc на .bashrc
Репозиторий будет в ~/.dotfiles. Для взаимодействия с ним определи алиас "config" и выключи отображение ещё не отслеживаемых файлов, иначе погрязнешь в перечислении файлов домашней директории
```shell
$ git init --bare $HOME/.dotfiles
$ echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
$ source .zshrc
$ config config --local status.showUntrackedFiles no
```Добавление файлов в репозиторий
```shell
$ config status
$ config add .vimrc .zshrc .config/tmux/tmux.conf
$ config commit -m "Add .vimrc, .zshrc and tmux.conf"
$ config remote add origin <remote-repo-url>
$ config push -u origin <branch>
```Если команда "config" не отрабатывает, то проверь применился ли алиас.
Если всё ок и команда успешно запушила репозиторий, то поздравляю с великолепием!
Теперь
git, скрываемый под config, будет сам подхватывать все изменения в отслеживаемых файлах. Тебе понадобится только коммитить и добавлять в отслеживание новые .файлыКроме того, на удаленном репозитории автоматически создатся структура до целевых .файлов, без надобности создавать директории для имитации пути.
Раскатывание .файлов на новой системе
$ echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
$ config config --local status.showUntrackedFiles no
$ source $HOME/.zshrc
$ git clone --bare <git-repo-url> $HOME/.dotfiles
$ config checkout
Последняя команда может провалиться из-за существующих конфигов в новой системе. Если текущие конфиги в новой системе не важны - удаляй их. В противном случае делай бекап. Для удобства пользуйся скриптом от Atlassian:```shell
mkdir -p .config-backup && \
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
xargs -I{} mv {} .config-backup/{}
```Теперь пробуй вновь
$ git checkout
Дополнительные заметки- если в ранее отслеживаемой папки добавились новые файлы, то новый файл или всю директорию понадобится добавить вновь к отслеживанию
- чтобы добавить в удаленный Github репозиторий README.md или дополнительные файлы, не относящиеся напрямую к dotfiles, то перенеси их в $HOME/.github, после чего добавь в отслеживание саму папку .github
— Github сам распарсит папку .github и отобразит README оттуда на главной странице репозитория
Источники
- snovvcrash - dotfiles and personalization
- articles, tools and tricks to manage dotfiles
- atlassian - how to manage dotfiles with bare git repo
- мои dotfiles для bspwm, picom, polybar, zsh, tmux и тд
#guide
❤🔥4🔥1
вольтаж
На этом OFFZONE буду выступать с докладом, в дуэте с коллегой @Su9r3m3. Расскажем про RAG в LLM, его архитектуру, вектора атак, разберём пару инцидентов и закончим защитой от подобного. 22 августа в AI.ZONE с 16:50 - 17:30 Для полноты картины, рекомендую…
Нулевой в ML?
За пару дней до конфы, обязательно посмотри вводный доклад про LLM, длиною в 60 минут.
Узнаешь что модели из себя представляют, в чем трудности обучения, как много индусов надо чтобы сделать AI-ассистента и даже про базовые атаки найдёшь.
После, подписывайся на @pwnai, ведь теперь ты будешь понимать о чём Артём пишет в своих постах и использовать это!
Без его помощи этого доклада могло бы и не быть, поэтому благодарим подписочкой
#guide #ai
За пару дней до конфы, обязательно посмотри вводный доклад про LLM, длиною в 60 минут.
Узнаешь что модели из себя представляют, в чем трудности обучения, как много индусов надо чтобы сделать AI-ассистента и даже про базовые атаки найдёшь.
После, подписывайся на @pwnai, ведь теперь ты будешь понимать о чём Артём пишет в своих постах и использовать это!
Без его помощи этого доклада могло бы и не быть, поэтому благодарим подписочкой
#guide #ai
YouTube
[1hr Talk] Intro to Large Language Models
This is a 1 hour general-audience introduction to Large Language Models: the core technical component behind systems like ChatGPT, Claude, and Bard. What they are, where they are headed, comparisons and analogies to present-day operating systems, and some…
💅6❤🔥2
file://localhost/etc/passwd что вернёт?
В RFC 8089, верный формат протокола описан как
file://<host>/<path>, в то время как все шпоры на LFR при SSRF говорят лишь о file:///<path>Причём, в
<host> возможно вписать домен. Система резолвнет его, и если тот указывает на 127.0.0.1, то вернётся содержимое файла. В противном случае получишь лишь отстук в DNS. питон пок
from urllib.request import urlopen
content = urlopen(
"file://yoogle.com/etc/passwd", timeout=2,
).read().decode('utf-8')
print(content)
Представил сколько возможностей для обхода фильтров? И это не последний твой приступ FOMO за сегодня.
В статье The Minefield Between Syntaxes от @yeswehack, автор вскрывает проблемы разных синтаксисов и как парсеры выживают с ними.
Представим, ты нашёл SSTI, но WAF блокирует символ$
Что делать?
Неприятно, но не критично, ведь в Python / Perl возможно представить символ через
\N{CHARACTER NAME}. Пример обхода фильтра
\N{dollar sign}{7*7} == ${7*7} == 49Уже на стену лезешь? Погоди, я с тобой ещё не закончил.
Давай дальше по загрузке файлов. Видел же в
Content-Disposition есть параметр filename?В RFC 6266 описан базовый подход с именем файла, но RFC 8187 вышибает дверь с... чего.. какие юникод байты
# RFC 6266
filename="image.png"
# RFC 8187
filename*=UTF8''image%0a.png
RFC 8187 вводит новые правила для
filename параметра, включая поддержку всего Unicode + способности кодировать произвольные байты через % То есть, ты можешь закодировать перенос строки (
%0a == \n) и всячески ломать как парсинг имени файла, так и куда тот запишется. . . .
FOMO карусель закрыта.
Как восстановишь силы, пробегись по статье автора ради:
⚀ разбор CVE из-за проблем синтаксиса [^]
⚀ кейс бб, из cache poisoning в stored xss через пролом валидации parse_url в PHP [^]
⚀ кейс бб, из слепого чтения файлов через SSRF в arbitrary file read [^]
Затем разнеси CTF по ресерчу
1. обход фильтров SSTI [^]
2. иной подход к протоколу file:// [^]
3. проломparse_urlв PHP [^]
#web #bypass #server_side #guide
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
32 24 8