Генератор обходов инъекции команд
Введите команду и regex-фильтр. Мы сгенерируем полезные нагрузки, которые его обходят.
Как это работает
Этот инструмент автоматизирует поиск пейлоадов инъекции команд, проходящих через заданный regex-фильтр. Он генерирует десятки обфусцированных вариантов вашей команды и тестирует каждый из них против regex — на стороне сервера в PHP, ничего не выполняется.
- 1. Введите команду: необработанная команда для инъекции, например
whoamiилиcat /etc/passwd. - 2. Вставьте regex-фильтр: любой формат: PHP
/pattern/flags, Pythonr"pattern"илиre.compile(...), JavaScriptnew RegExp(...), Обратная кавычка Go или простой шаблон. - 3. Выберите тип фильтра: Фильтры blacklist блокируют совпадающий ввод (пейлоад НЕ должен совпадать); фильтры whitelist допускают только совпадающий ввод (пейлоад должен совпадать).
- 4. Получите обходы: каждый пейлоад, прошедший условие фильтра, возвращается, сгруппированный по технике, с указанием применимой ОС.
Категории техник обхода
Генератор охватывает следующие семейства техник обхода для Linux/Bash и Windows CMD/PowerShell.
Encoding (base64 / hex / xxd / octal)
Encodes the entire command using base64 (subshell and pipe-to-sh), raw hex decoded by xxd -r -p, printf \x escapes (lowercase), and ANSI-C $'\x..' quoting. Lowercase-only variants bypass [A-Z] filters.
Quote splitting
Inserts empty single quotes, double quotes, or backslash escapes inside the keyword, e.g. c''at or c\at, breaking pattern matching without changing shell semantics.
Space bypass
Replaces literal spaces with $IFS, ${IFS}, a tab character ($'\t'), brace expansion ({cmd,arg}), or input redirection (cat</etc/passwd).
Slash bypass
Replaces forward slashes using ${HOME:0:1}, ANSI-C $'\x2f', $'\57', or $(printf '\57').
Variable concat
Splits the command across two shell variables (a=wh; b=oami; $a$b) to avoid matching the full keyword in the regex.
Alternative commands
Substitutes blocked commands: cat → less, tac, nl, head, xxd; whoami → id; ls → echo *.
Wildcards / globbing (hint)
Generates c?t and c* variants. These bypass the regex but require the correct binary on the filesystem. Verify manually.
CMD caret obfuscation
Inserts the ^ escape character between chars (w^h^o^a^m^i). CMD ignores ^ and executes the command normally.
CMD quote splitting
Inserts empty double quotes (wh""oami). Functionally identical to the unquoted form in CMD.
CMD variable tricks
Splits across environment variables (set a=wh& set b=oami& call %a%%b%). Also supports delayed expansion via cmd /V:ON and !var!.
PowerShell backtick
The backtick (`) is a PowerShell escape character silently ignored in identifiers. wh`oami executes as whoami.
PowerShell encoding
Encodes as UTF-16LE base64 for powershell -enc, or rebuilds from a char array ([char[]](119,104,...) -join '') or string concat ('wh'+'oami').
PowerShell invoke variants
Uses iex, the & operator, ScriptBlock::Create, or mixed-case IeX without spelling Invoke-Expression.
Blacklist и whitelist фильтры
Blacklist — пейлоад НЕ должен совпадать
Приложение блокирует ввод при совпадении с regex. Regex описывает опасный шаблон — например [;&|`$] или cat|ls|whoami. Пейлоад не должен срабатывать на regex, чтобы пройти.
Распространено в: PHP preg_match() с die/block при совпадении, защитах Python re.search().
Whitelist — пейлоад должен совпадать
Приложение обрабатывает ввод только при совпадении с regex. Regex описывает разрешённые символы — например ^[^;\/&A-Z]*$. Пейлоад должен удовлетворять regex, при этом выполняя команду.
Распространено в: валидаторах ввода, исходниках CTF-заданий, allowlist-ах WAF.
Совет: если regex закреплён с помощью ^ и $, это почти всегда whitelist. Инструмент предупредит вас, если выбор режима выглядит неправильным.
Поддерживаемые форматы ввода regex
Вставьте regex точно в том виде, в каком он появляется в исходном коде — инструмент автоматически определяет формат, извлекает шаблон и флаги, и компилирует в PHP-совместимое выражение.
| Язык / формат | Пример |
|---|---|
| PHP / JS / Ruby / Perl | /[;&|`$\s]/i |
| Простой шаблон | ^[0-9a-z]+$ |
| Python raw-строка | r"^[^;/\&.<>\rA-Z]*$" |
| Python re.compile | re.compile(r"[;&|]", re.IGNORECASE) |
| JavaScript new RegExp | new RegExp("[;&|]", "gi") |
| Go raw-строка | `^[a-z0-9]+$` |
| Perl m// | m/[;&|]/gi |
| Строка в кавычках | "^[a-z0-9]+$" |
FAQ
Действительно ли это выполняет команды?
Нет. Всё выполняется на стороне сервера в PHP. Полезные нагрузки формируются как строки и проверяются по вашему регулярному выражению через preg_match(). На сервере не выполняется ни одной команды.
Что означает «полезная нагрузка должна / НЕ должна совпадать»?
Чёрный список блокирует ввод при совпадении регулярного выражения: полезная нагрузка НЕ должна совпадать. Белый список пропускает ввод только при совпадении: полезная нагрузка должна совпадать. Инструмент автоматически определяет более вероятный вариант и предупреждает, если ваш выбор выглядит неверным.
Почему некоторые полезные нагрузки помечены предупреждением?
Полезные нагрузки на основе подстановочных знаков и glob (например, /bin/c?t) зависят от структуры файловой системы цели. Они обходят фильтр регулярного выражения, но сработают, только если ожидаемый бинарник есть по этому пути.
Почему моя полезная нагрузка с ANSI-C-кавычками не выполняется напрямую?
Строка ANSI-C вида $'\x77\x68\x6f\x61\x6d\x69' в bash преобразуется в буквальную строку whoami, но сама по себе не выполняется. Добавьте перед ней eval или bash -c — это строчные буквы, которые вряд ли попадут под фильтр.
Можно ли использовать это для CTF-заданий?
Да. Этот инструмент предназначен для CTF и авторизованного пентеста, когда нужно обойти входной фильтр для выполнения команд. Используйте его только на системах, которыми владеете или на тестирование которых есть явное разрешение.