Задание №1

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

  1. dooble

    dooble Members of Antichat

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

    Итак, есть скрипт, работающий с таблицей "pricelist", в этой же базе лежит таблица "admin_site",
    нужно вывести из нее поля user, password, email.
    Code:
    <?php
    if(preg_match("|[\[ _\-\]\*(#\\0]+|ims", $_SERVER['REQUEST_URI'].urldecode($_SERVER['REQUEST_URI'])))die("Hacking attempt");
    
    $db = new mysqli('localhost','user','pass','database');    //Здесь ставим свою учетку
    if(mysqli_connect_errno()) die(mysqli_connect_error());
    
    foreach($_GET as $key=>$id){
        $sql="select tovar, dataprice, cena from pricelist where $key = $id and kmag=1";
        if ($r = $db->query($sql)) {
            while($obj = $r->fetch_object()){
                echo "<br>| $obj->dataprice | $obj->tovar | $obj->cena |<br>";
            }
            $r->close();
        }
    }
    $db->close();
    ?>
    
    Понятно, что скрипт уязвим для SQLi, и нужно составить рабочий вектор.

    На свой сервер ставить не буду (чтобы не подвергать насилию), поэтому решаем по тексту скрипта,
    или вот тестовые таблички, ставим на локалке.
    --
    -- Структура таблицы `admin_site`
    --

    DROP TABLE IF EXISTS `admin_site`;
    CREATE TABLE IF NOT EXISTS `admin_site` (
    `id` int(2) NOT NULL,
    `user` varchar(20) NOT NULL,
    `password` varchar(41) NOT NULL,
    `email` varchar(40) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

    --
    -- Дамп данных таблицы `admin_site`
    --

    INSERT INTO `admin_site` (`id`, `user`, `password`, `email`) VALUES
    (1, 'admin', '*4414E26EDED6D661B5386813EBBA95065DBC4728', 'webmaster@localhost');

    -- --------------------------------------------------------

    --
    -- Структура таблицы `pricelist`
    --

    DROP TABLE IF EXISTS `pricelist`;
    CREATE TABLE IF NOT EXISTS `pricelist` (
    `id` int(4) NOT NULL,
    `dataprice` date NOT NULL,
    `tovar` varchar(100) NOT NULL,
    `cena` int(10) NOT NULL,
    `kmag` int(1) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

    --
    -- Дамп данных таблицы `pricelist`
    --

    INSERT INTO `pricelist` (`id`, `dataprice`, `tovar`, `cena`, `kmag`) VALUES
    (1, '2017-07-26', 'ноутбук ASUS X540LA, 90NB0B02-M17590', 26990, 1);

    Пример штатного вызова скрипта: test.php?id=1
    Нужно составить вызов так, чтобы вернулось содержимое "admin_site".
    Название таблиц менять нельзя.

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

    Скрипт упростил специально, чтобы не тратить время на поиск уязвимого участка, только смысловая нагрузка и минимальный функционал.
    Ничего не отвлекает.

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

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

    Удачи.


    Задание прошли:
    crlf
    t0ma5
    SooLFaa
    cat1vo

    <Cyber-punk>
    rrock
    Evan
    st55

    == Прошло две недели, от групп ответы больше не принимаются.
    Shubka75 (1 часть)
    == После публикации некоторых подсказок справились:
    seotor
    Jup1ter_
    shotya







    =======
    http://z1.ru.host1606652.serv16.hostland.pro/test.php?id=1,
    принимает не все ответы.
    Ориентируйтесь на свои локальные результаты.
    =======

    Принимается и частичное прохождение:
    1 часть - получить вывод
    2 часть - протащить в запрос строку "admin_site"
    Проходить можно в любом порядке.
     
    #1 dooble, 26 Jul 2017
    Last edited: 6 Dec 2017
    cat1vo, SooLFaa, K800 and 3 others like this.
    1. BabaDook

      BabaDook Well-Known Member

      Joined:
      9 May 2015
      Messages:
      1,063
      Likes Received:
      1,559
      Reputations:
      40
      Заливай на сервер. Делай по людски
      Вход на панель управления: адрес : https://panel.hostland.ru логин : host1606652 пароль: 11a3bb7f Вход по FTP: сервер : ftp16.hostland.ru логин : host1606652 пароль : fb4b6c99 Вход MySQL: https://mysql16.hostland.ru логин : host1606652 пароль : 59befe04 database : host1606652 host : localhost
       
      SooLFaa, Veil, erwerr2321 and 2 others like this.
      1. dooble

        dooble Members of Antichat

        Joined:
        30 Dec 2016
        Messages:
        231
        Likes Received:
        601
        Reputations:
        145
        Задание уже составлено по людски, в соответствии с нормами, которые сложились и на ачате и на рдоте.
        Даны исходники, поднимаем тестовую площадку у себя (при необходимости).

        Тем не менее, жест доброй воли зачтен конечно, посмотрим сколько продержится площадка.
        Сканеры и пр. тулзы площадка выдержит недолго, тарифный план не позволит.

        Залито:
        http://z1.ru.host1606652.serv16.hostland.pro/test.php?id=1

        Все же советую поднять свою тестовую площадку.
         
        1. Veil

          Veil Banned

          Joined:
          21 May 2015
          Messages:
          2,020
          Likes Received:
          3,349
          Reputations:
          72
          Бабадук хакер авторитетный.
           
          1. Тот_самый_Щуп

            Тот_самый_Щуп Reservists Of Antichat

            Joined:
            23 Mar 2017
            Messages:
            265
            Likes Received:
            174
            Reputations:
            119
            Понятия чтит? Как в код влезать четко, знает?

            По теме, QUERY_STRING - не везде работать то будет, т.е многие редакции его будут игнорировать, правильнее было поставить REQUEST_URI который корректно будет везде работать.
            Можно считать что я прошёл? Поставил на сервер, $_SERVER['QUERY_STRING'] - пусто. Фильтр не действует ;)
             
            Veil and dooble like this.
            1. dooble

              dooble Members of Antichat

              Joined:
              30 Dec 2016
              Messages:
              231
              Likes Received:
              601
              Reputations:
              145
              Правильное замечание, поправил скрипт.

              На конкретном сервере, если не завелся фильтр, да - удача, личная.
              Но в рамках задания за прохождение, к сожалению ;), не считается.
               
              1. BabaDook

                BabaDook Well-Known Member

                Joined:
                9 May 2015
                Messages:
                1,063
                Likes Received:
                1,559
                Reputations:
                40
                Какой там хакер? Какие понятие, на хую я крутил всю эту хуета.

                crlf хакер
                 
                Veil likes this.
                1. t0ma5

                  t0ma5 Reservists Of Antichat

                  Joined:
                  10 Feb 2012
                  Messages:
                  828
                  Likes Received:
                  815
                  Reputations:
                  90
                  все заняты делами или всем плевать?
                  хороший таск, спасибо
                   
                  _________________________
                  SooLFaa and dooble like this.
                  1. SooLFaa

                    SooLFaa Members of Antichat

                    Joined:
                    17 Mar 2014
                    Messages:
                    530
                    Likes Received:
                    499
                    Reputations:
                    154
                    Действительно клевый
                     
                    _________________________
                    dooble likes this.
                    1. cat1vo

                      cat1vo Level 8

                      Joined:
                      12 Aug 2009
                      Messages:
                      375
                      Likes Received:
                      343
                      Reputations:
                      99
                      Хорошее задание, почерпнул для себя кое-что новое! Надеюсь будут еще ;)
                       
                      dooble likes this.
                      1. dooble

                        dooble Members of Antichat

                        Joined:
                        30 Dec 2016
                        Messages:
                        231
                        Likes Received:
                        601
                        Reputations:
                        145
                        Прошла неделя.
                        Осилили задание четверо - красавчики, без вопросов.
                        Но для целого форума, это не густо.

                        Хотя задание "пограничное" что ли, та редкая ситуация, когда уровень сложности попадает в широкий диапазон подготовленности и опыта, думаю, что и в МОА не все пройдут, если их разбудить, но большинству придется вполне по интересу (Стрелочка, Нахтачок, Ицмай, Шелл-код, Хамена вполне могли бы повтыкать не напрягаясь).
                        ROA - тоже не должны обидеться.

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

                        Тот случай, когда можно получить моральное удовлетворение - я сделал, я крут.
                        И стать на ступеньку выше, чем просто похек сайтов.

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

                        Возможно пока не хватает опыта в прохождении заданий, ну так вот удобный случай повысить скилл.
                         
                        #11 dooble, 3 Aug 2017
                        Last edited: 3 Aug 2017
                        crlf and cat1vo like this.
                        1. BabaDook

                          BabaDook Well-Known Member

                          Joined:
                          9 May 2015
                          Messages:
                          1,063
                          Likes Received:
                          1,559
                          Reputations:
                          40
                          Сори за фот топ, но сообщение не только автору, может кто-то ещё захочет. Если будут ещё задание разные, разнобразные, то мы возможно можем оказать помощь в предоставление место на сервере, возможно отдельная виртуалка или сервер.
                           
                          dooble likes this.
                          1. dooble

                            dooble Members of Antichat

                            Joined:
                            30 Dec 2016
                            Messages:
                            231
                            Likes Received:
                            601
                            Reputations:
                            145
                            Две новости, хорошая и плохая.

                            Сначала хорошая - подтвердилось предположение, что задание вполне доступно не только "цветным", мои поздравления Evan`у.

                            Теперь о грустном.
                            Автор, cat1vo и <Cyber-punk> использовали прием, который раньше считался универсальным, но похоже этому пришел конец.
                            Во всяком случае на http://z1.ru.host1606652.serv16.hostland.pro/test.php?id=1
                            не работает (версия мускула 5.7.18-15-log).
                            Свежая 10.1.23-MariaDB отработала нормально, возможно так настроен конкретный сервер, нужно тестить.
                            Жаль, удобный был способ.

                            Поставил 5.7.19 - ошибка синтаксиса.
                            Возможно пропатчили в v 5.7.1.
                            UPD проверил, в 5.7.1-m11-log уже пропатчено.

                            Тем не менее ответы будут приниматься и с таким вариантом.
                             
                            #13 dooble, 7 Aug 2017
                            Last edited: 7 Aug 2017
                            Evan likes this.
                            1. SooLFaa

                              SooLFaa Members of Antichat

                              Joined:
                              17 Mar 2014
                              Messages:
                              530
                              Likes Received:
                              499
                              Reputations:
                              154
                              В чем проблема залить на другой?
                              http://sdasasdsad.000webhostapp.com/index.php?id=1

                              UPDATE: Этот символ не работает видимо тоже.
                               
                              _________________________
                              Gorev likes this.
                              1. dooble

                                dooble Members of Antichat

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

                                  SooLFaa Members of Antichat

                                  Joined:
                                  17 Mar 2014
                                  Messages:
                                  530
                                  Likes Received:
                                  499
                                  Reputations:
                                  154
                                  backtick?
                                   
                                  _________________________
                                  Gorev likes this.
                                  1. dooble

                                    dooble Members of Antichat

                                    Joined:
                                    30 Dec 2016
                                    Messages:
                                    231
                                    Likes Received:
                                    601
                                    Reputations:
                                    145
                                    да
                                     
                                    1. SooLFaa

                                      SooLFaa Members of Antichat

                                      Joined:
                                      17 Mar 2014
                                      Messages:
                                      530
                                      Likes Received:
                                      499
                                      Reputations:
                                      154
                                      По мне это наоборот хорошо, решение без него выглядит более интересным.
                                       
                                      _________________________
                                      cat1vo likes this.
                                      1. dooble

                                        dooble Members of Antichat

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

                                          crlf Green member

                                          Joined:
                                          18 Mar 2016
                                          Messages:
                                          684
                                          Likes Received:
                                          1,516
                                          Reputations:
                                          460
                                          Вот оно что, я его и в хвост и в гриву, а он не работает :)

                                          Кстати, ещё из неприятных новостей, узнал только на днях. Оказывается в мускуле появилась опция secure-file-priv, которая начиная с какой-то версии, по дефолту, не даёт экспортиовать/импортировать файлы вне установленной директории (в 5.7.19 secure-file-priv="/var/lib/mysql-files/"). Т.е. если юзер имеет file_priv, то пока в my.cnf, либо при старте не будет явно указано secure-file-priv="", операции, затрагивающие работу с локальной файловой системой (LOAD_FILE, INTO OUTFILE), не будут работать вне установленной директории. Для того чтобы узнать значение, нужно выполнить запрос "SELECT @@secure_file_priv;".

                                          https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
                                           
                                          xmp, eminlayer7788, Ravenous and 8 others like this.