.git

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск

Чаще всего если вы в ctf таске (или в боевых условиях) встречаете папку .git, то обычно на нее права 403 и запрещенный листинг.

Опишу какие файлы находятся в этой папке (взято с http://gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html) :

   |-- COMMIT_EDITMSG
   |-- FETCH_HEAD
   |-- HEAD
   |-- ORIG_HEAD
   |-- branches
   |-- config
   |-- description
   |-- hooks
   |   |-- applypatch-msg
   |   |-- commit-msg
   |   |-- post-commit
   |   |-- post-receive
   |   |-- post-update
   |   |-- pre-applypatch
   |   |-- pre-commit
   |   |-- pre-rebase
   |   |-- prepare-commit-msg
   |   `-- update
   |-- index
   |-- info
   |   `-- exclude
   |-- logs
   |   |-- HEAD
   |   `-- refs
   |-- objects
   `-- refs
       |-- heads
       |-- remotes
       |-- stash
       `-- tags

Описание файлов

Все примеры берутся с проводимого уфологами CTF - http://ctfboard.ml

Мы же рассмотрим самые важные файлы.

Некоторая информация была взята со статьи http://habrahabr.ru/post/143079/

index

В этом файле находится перечисление всех файлов данной директории.

Пример:

Пример содержимого файла .git/index


config

Как вы уже поняли в нем находятся конфигурации данного репозитория.

Пример:

    [core]
    	repositoryformatversion = 0
    	filemode = true
    	bare = false
    	logallrefupdates = true
description

Файл описания данного репозитория.

Пример(файл пуст):

    Unnamed repository; edit this file 'description' to name the repository.
HEAD

Файл со ссылкой на текущую ветку (чаще всего ref: refs/heads/master)

Пример(файл по умолчанию):

    ref: refs/heads/master
COMMIT_EDITMSG

Файл с последним комментарием последнего редактора (опять же не часто используется, но в некоторых ctf может помочь)

Пример(файл по умолчанию):

    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    # Explicit paths specified without -i or -o; assuming --only paths...
    #
    # Committer: is_work <is_work@is.lan>
    #
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #	new file:   secret_database_dump.txt
    #


logs/HEAD

Файл с историей редактирования кода (спасибо https://github.com/ctfs/write-ups-2014/tree/master/9447-ctf-2014/bashful)

Пример:

    0000000000000000000000000000000000000000 3c4992205aba2077cbf87fc7cde900fabecd1140 root <root@ip-172-31-10-205.ap-southeast-2.compute.internal> 1412673432 +0000commit (initial): Hurr durr
    3c4992205aba2077cbf87fc7cde900fabecd1140 ec972f9af79a09129021a30e7f08099aa2b8a81d John Doe <fsck@you.me> 1412673456 +0000   commit (amend): Hurr durr
    ec972f9af79a09129021a30e7f08099aa2b8a81d 0b4d6fe0adf809c4e7b7a0d47132600b68f79fda root <root@ip-172-31-10-205.ap-southeast-2.compute.internal> 1417230572 +0000commit: My precious flag now exists



Примеры заданий из некоторых ctf

Примеры буду постепенно пополнять.

Поиск файла в файловой системе

Такое было в соревнованиях от уфологов на сайте (если он до сих пор активен) - http://ctfboard.ml


index файл


Что требовалось сделать:

  1. Т.к. таск назывался git, то первым делом я пошел по адресу uri/.git
  2. Такс, 403. Значит папка есть - но посмотреть ее листинг мы пока не можем. Значит будем получать файлы по общему списку!
  3. В первую очередь проверяем файл index - в нашем случае он присутствует.
  4. Смотрим в нем список файлов в директории - находим файл secret_database_dump.txt
  5. Проверяем опытным путем есть ли файл по адресу uri/secret_database_dump.txt
  6. И получаем флаг - githere{7862bfa46284c9b4c693d698dc18ff9e}

Утилиты

Утилита, помогающая в данной ситуации https://github.com/kost/dvcs-ripper

Примеры тасков

9447 CTF 2014: bashful

https://github.com/ctfs/write-ups-2014/tree/master/9447-ctf-2014/bashful


CSAW CTF 2015 - Web 200

http://jordan-wright.com/blog/2015/09/21/csaw-ctf-2015-web-200-writeup/


9447 CTF Tumorous

https://ctf-team.vulnhub.com/9447-ctf-tumorous/