1. PHP / Говнокод #22324

    −11

    1. 1
    2. 2
    <?php
    echo `rm -rf /`;

    Код выводит в стандартный поток вывода строку "rm -rf /", проверь.

    Запостил: huesto, 13 Февраля 2017

    Комментарии (77) RSS

    • > `
      Ответить
    • тег не закрыл
      Ответить
    • "rm" не является внутренней или внешней
      командой, исполняемой программой или пакетным файлом.

      Шах и мат, аметист!
      Ответить
    • Сколько можно повторять, что нужно писа́ть не rm -rf /, а rm -rf /*. Там же защита от дурака.
      Ответить
      • показать все, что скрытоЗвездочка не развернется без шелла. Он вызывается по дефолту?
        Ответить
        • показать все, что скрытоВ `` - да. Там же по-человечески параметры не передать, только одной строкой.

          З.Ы. Мало SQL и HTML инъекций, так ещё и для shell-инъекций возможность оставили...
          Ответить
          • показать все, что скрыто>Там же по-человечески параметры не передать, только одной строкой.
            А без шелла это никак?
            Ответить
            • показать все, что скрытоНу либо по-человечески массивом, либо пусть шелл сам своё говно парсит. Нафига за него это делать?
              Ответить
              • показать все, что скрытоЧто значит шелл свое говно?
                Программе при запуске поступает на вход строка с параметрами или массив?
                Ответить
                • показать все, что скрытоВ никсах - массив, в венде - строка. Но в бектики влазит только одна строка. Поэтому во всех языках с бектиками её тупо отдают шеллу и пусть сам парсит. Заодно ещё всякие перенаправления 2>&1 работают, глобы и прочие фишки шелла.
                  Ответить
          • Кстати, а на какой странице документации PHP написано про бектики? Я вообще ничего о них не нашёл. Апострофы, кавычки, heredoc, nowdoc, короткие и длинные теги видел, а бектики не встретились.
            Ответить
            • показать все, что скрытоhttp://php.net/manual/en/language.operators.execution.php
              Ответить
              • Спасибо. Значит, синоним вызова функции shell_exec.
                Ответить
                • > синоним вызова функции ShellExecuteEx
                  Ответить
                  • Как это можно проверить?
                    Ответить
                    • Запустить какую-нибудь тулзу от Руссиновича, которая умеет мониторить сисколлы
                      Ответить
                      • А не лучше ли посмотреть исходники PHP?
                        Ответить
                        • Вот лишь бы повод найти, чтоб в говне покопаться
                          Ответить
                          • Не я первый начал. Я написал, что бектики — синтаксический сахар, аналог пэхапэшной функции shell_exec. Значит, они не нужны, потому что можно просто написать вызов этой функции.

                            А Вы уже стали копаться в том, к каким системным вызовам сводится вызов shell_exec. Значит, Вам нравится копаться.
                            Ответить
                        • показать все, что скрытоВ сорцах используется функция popen. Но я не знаком с линуксом (впрочем, так же как и с си), поэтому не понял как ей пользоваться
                          Ответить
                          • показать все, что скрытоЕсть, я раскопал. На винде вызывается CreateProcessW https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682425(v=vs.85).aspx

                            (вторым параметром передаётся наша строка, с некоторыми преобразованиями)
                            Ответить
      • показать все, что скрытоСпасибо за инфу, не знал. В следующий раз проверю
        Ответить
      • показать все, что скрытоКстати, а что я увижу после выполнения этой команды? (ни разу не пробовал)
        Ответить
        • показать все, что скрыто
          # rm -rf /
          rm: it is dangerous to operate recursively on '/'
          rm: use --no-preserve-root to override this failsafe
          Ответить
          • показать все, что скрытоНу а если добавить этот флаг, то что я увижу в мониторе после выполнения? Синий экран?
            Ответить
            • Остатки шелла
              Ответить
            • останешься все в той же сессии, только вот внезапно не сможешь ничего выполнить, потому что ничего и нет. проверял
              Ответить
              • показать все, что скрытоА что, в линухе нет такого как в винде "этот файл открыт в другой программе, поэтому хуй ты удалишь" ?
                Ответить
              • Кажется, при особо удачном железе можно ещё снести UEFI и остаться с кирпичом.
                Ответить
                • показать все, что скрытоРазве что при удалении /sys/firmware/efi какие-нибудь переменные из nvram повынесутся...
                  Ответить
                  • показать все, что скрытоТак, барманд начинает кидаться ворециями
                    Ответить
                    • Тов. Новосельцев, залогиньтесь.
                      Ответить
                      • Новосельцев бы не написал светлое имя Борманда с маленькой буквы и с опечаткой.
                        Это максимум один из клонов, у которого на аватарке Ким смотрит вправо. P.S. Кстати, где они? Я ждал наплыва комментариев про пользу JS.
                        Ответить
                        • >> Это максимум один из клонов, у которого на аватарке Ким смотрит вправо.

                          Говнокод... Говнокод не меняется
                          Ответить
                          • Вот кстати тот тред: http://govnokod.ru/22303#comment370821
                            Головой туда, головой сюда.
                            Ответить
              • Единственно, что все вышеописаное произойдет в памяти кернела, но никто не говорит, что это сразу же закомитят на диск / по сети и т.п.
                На некоторых файловых системах, особенно на XFS удаление - не больно шустрое, и может требовать дополнительного места на диске. Так что, если звезды будут благосклонны, удаление не произойдет.

                ЗЫ. Самый безопасный вариант удалить корневую файловую систему - из Докер контейнера. Там вообще обычно нечего удалять.
                Ответить
    • показать все, что скрытоЗ.Ы. rm -rf / - говно. Долго работает и все уже знают. Для SSD идеален blkdiscard:
      # TRIM your disk to maximize performance*
      blkdiscard /dev/sda
      *By default, blkdiscard will discard all blocks on the device.
      Ответить
    • показать все, что скрытоЗачем может вообще понадобиться рм рф / ?
      Ответить
      • Перед суицидом сделать, чтоб следов не оставить
        На гк постить
        Ответить
        • показать все, что скрыто> Перед суицидом сделать, чтоб следов не оставить
          Просто унеси пароль на шифрованный раздел с собой в могилу :) И если передумаешь - не придётся восстанавливать файлы.
          Ответить
          • Лучше все-таки потереть, чтобы и передумывать не хотелось
            Ответить
            • показать все, что скрытоНу тогда dd надо, а не rm.
              Ответить
            • - /dev/sdb1! - сказал он, садясь на кровати, сбрасывая с нее ноги. - /dev/sdb1, что же это такое! - сказал он вслух, совершенно уверенный, что директория со смешными картинками слышит его, что она здесь, что она молчит, не отзывается только потому, что сама раздавлена, сама понимает непоправимый ужас всего того, что она наделала. Ах, все равно, /dev/sdb1, - прошептал он горько и нежно, желая сказать, что он простит ей все, лишь бы она по-прежнему кинулась к нему, чтобы они вместе могли спастись, - спасти свою прекрасную любовь в том прекраснейшем весеннем мире, который еще так недавно был подобен раю. Но, прошептав: "Ах, все равно, /dev/sdb1!" - он тотчас же понял, что нет, не все равно, что спасения, возврата к тому дивному видению, что дано было ему когда-то на фишки.нет уже нет, не может быть, и тихо заплакал от боли, раздирающей его грудь.

              Она, эта боль, была так сильна, так нестерпима, что, не думая, что он делает, не сознавая, что из всего этого выйдет, страстно желая только одного - хоть на минуту избавиться от нее и не попасть опять в тот ужасный мир, где он провел весь день и где он только что был в самом ужасном и отвратном из всех земных снов, он нашарил и отодвинул ящик ночного столика, поймал холодный и тяжелый ком револьвера и, глубоко и радостно вздохнув, раскрыл рот и с силой, с наслаждением выстрелил.
              Ответить

    Добавить комментарий