Вводные

Нам предлагается скачать файл Illumination.zip, имеющий хеш-сумму SHA256 cbd6cd9a9379d0f4193f35c09fa60c0753c0d31cb2848ed5d575ba99062a1331 и размер в 38054 байт, пароль для архива hackthebox.

Задача: найти токен нового разработчика.

Проверяем файл

$ ls -la Illumination.zip 
-rw-r--r-- 1 kiberdruzhinnik kiberdruzhinnik 38054 Aug 20 13:57 Illumination.zip
$ echo "cbd6cd9a9379d0f4193f35c09fa60c0753c0d31cb2848ed5d575ba99062a1331  Illumination.zip" | sha256sum -c
Illumination.zip: OK

Размер и контрольная сумма файла совпали, можно приступать к распаковке артефактов.

$ unzip Illumination.zip
hackthebox

После распаковки артефактов быстро выясняется, что в архиве лежал git-репозиторий.

Alt text

Исследование git-репозитория

Так как нам предлагается найти секретный токен, то посмотрим в историю коммитов гита.

$ git log
commit edc5aabf933f6bb161ceca6cf7d0d2160ce333ec (HEAD -> master)
Author: SherlockSec <[email protected]>
Date:   Fri May 31 14:16:43 2019 +0100

    Added some whitespace for readability!

commit 47241a47f62ada864ec74bd6dedc4d33f4374699
Author: SherlockSec <[email protected]>
Date:   Fri May 31 12:00:54 2019 +0100

    Thanks to contributors, I removed the unique token as it was a security risk. Thanks for reporting responsibly!

commit ddc606f8fa05c363ea4de20f31834e97dd527381
Author: SherlockSec <[email protected]>
Date:   Fri May 31 09:14:04 2019 +0100

    Added some more comments for the lovely contributors! Thanks for helping out!

commit 335d6cfe3cdc25b89cae81c50ffb957b86bf5a4a
Author: SherlockSec <[email protected]>
Date:   Thu May 30 22:16:02 2019 +0100

    Moving to Git, first time using it. First Commit!

В истории коммитов видим коммит с хеш-суммой 47241a47f62ada864ec74bd6dedc4d33f4374699, где разработчик благодарит участников проекта за предоставление информации о секретном токене, а также о его удалении. Логично предположить, что токен должен находиться на коммит раньше, то есть, на коммите с хеш-суммой ddc606f8fa05c363ea4de20f31834e97dd527381.

Переключимся на этот коммит.

git reset --hard && git checkout ddc606f8fa05c363ea4de20f31834e97dd527381

После этого поищем в файлах подстроку token с помощью grep:

$ grep token . -R
./config.json: "token": "SFRCe3YzcnNpMG5fYzBudHIwbF9hbV9JX3JpZ2h0P30=",
...
./bot.js:client.login(Buffer.from(config.token, 'base64').toString('ascii')) //Login with secret token

Стоит обратить внимание, что токен в файле config.js закодирован с помощью base64 (это видно из файла bot.js).

Поэтому декодируем его:

$ echo SFRCe3YzcnNpMG5fYzBudHIwbF9hbV9JX3JpZ2h0P30= | base64 -d
HTB{v3rsi0n_c0ntr0l_am_I_right?}

На этом можно отправить флаг на проверку.