/Разборы задач
5 ноября 2026
Райтап на задачу «Слепая инъекция»
Пишем скрипт для слепой SQL-инъекции по ответам true/false и разбираем альтернативу с sqlmap.2
3

Web
Задача «Старый коммит»
«Чтобы найти флаг, нужно вернуться в прошлое» — гласит задача. Перейдём по ссылке. Нас встречает хакерская матрица.
Первая мысль — посмотреть archive.org, но, к сожалению, там то же самое и даже в исходниках ничего полезного нет.
В таком случае остаётся сканировать сайт, для этого можно использовать dirb или gobuster.
Сразу же находим директорию.git. Видимо название «старый коммит» было не просто так. Надо каким-то образом извлечь этот «старый коммит». По первой ссылке в гугле находим утилиту git-dumper, которая позволяет извлечь Git-репозиторий с любого сайта. Устанавливается она с помощью простого pip install git-dumper.
Отлично, теперь переходим в директорию old-commit и смотрим историю коммитов.
Коммит с именем Flag звучит интересно, попробуем его прочитать с помощью git show <хеш коммита>.
Чему мы научились, Палмер? Использовать git-dumper? Давайте разберёмся, как бы мы могли извлечь флаг ручками.
Открываем.git/HEAD — это служебный файл, в котором находится ссылка на текущую ветку. Откроем её.
Интересный хеш. Чтобы открыть коммит поэтому хешу, необходимо перейти по.git/objects/первый_байт_хеша/остаток_хеша. Зачем вообще в Git оно так реализовано? Почему нельзя было просто оставить кучу файлов в директории objects? Дело в том, что некоторые файловые системы имеют жёсткий лимит на максимальное количество файлов в одной директории (например, в FAT32 — 65 534 файла на одну папку). Деление хеша помогает обойти этот лимит, равномерно распределяя нагрузку по подпапкам.
Смотрим, что же за файл мы такой скачали.
Для содержимого Git использует сжатие zlib. Извлечём данные с помощью zlib-flate.
Теперь у нас есть parent-коммит, точно так же его скачаем и распакуем.
Теперь мы снова узнали нужный нам коммит. Как извлечь данные? Снова скачаем commit.
Тут мы видим непонятные байты и index.html. В Git-дереве данные идут строго друг за другом. Запись о файле выглядит так:
[права_доступа][имя_файла][нулевой_байт][20_байт_хеша]Находим нулевой байт в выводе xxd, всё, что после него — хеш коммита. Таким образом получается ровно 40 hex-символов: 9b7fc0020c351b0fc748dc44f843f272c5535bb7. Остаётся скачать этот объект и распаковать.
Вы восхитительны, что прошли тяжелый путь и решили задачу ручками.