OverTheWire | Bandit | Прохождение с 1 до 16 лвл.

Попалась мне задача на днях от заказчика пройти игру от OverTheWire  и дойти до 16 уровня. Ну что же, вызов принят 🙂

Первым делом надо было открыть образ в VirtualBox и запустить его. В описании говорится что нужно подключится к пользователю по локальному хосту по порту 2222, по этому, пробрасываем порт на локальный IP адаптера и в терминале ( GIT если у Вас WINDOWS), подключаемся по нужным данным.

И так, поехали.

Уровень 1.

Подключившись, видим уведомление о том, что пароль к следующему уровню лежит в файле с названием ««, а сам файл лежит в домашней папке пользователя. По этому открываем его простой командой и получаем пароль:

cat ~/-

Чтобы перейти на следующий, нужно просто подключить так же по  локалке с пользователем у которого логин будет такой же, только префикс не «0«, а «1». В моём случае, начальный пользователь был mark00, по этому логинимся под пользователем mark1.

 

Уровень 2.

Следующий уровень так же прост. Нам говорят, что пароль записан в файле «spaces in this filename«. В bash командах, если в имени файла есть пробелы — то перед каждым пробелом ставится обратный слэш «\«, то есть, в командой строке название файла должно быть прописано «spaces\ in\ this\ filename«. По этому просто выполняем команду и получаем пароль:

cat spaces\ in\ this\ filename

Так же, можно просто прописать «cat spaces» и нажать кнопку «TAB«, и название автоматически допишется 🙂

 

Уровень 3.

На этом уровне нам говорится, что пароль для следующего уровня хранится в скрытом файле в каталоге inhere. Значит, выполняем команду чтобы перейти в этот каталог:

cd inhere

После чего делаем обычную команду для просмотра файлов:

cat ./.hidden

 

Уровень 4.

На этом этапе говорится, что файл хранится только в читаемом файле. Для того чтобы найти этот файл, нужно было написать вот такой скрипт bash:

for x in `find inhere -type f -print`;
    do
        file $x;
    done

Чтобы создать скрипт я использовал редактор nano:

nano search.sh

Вставил код в файл и сохранил.  Далее просто запустил скрипт командой:

/bin/bash ./search.sh

И получил вывод:

inhere/-file08: data
inhere/-file05: data
inhere/-file07: ASCII text
inhere/-file04: data
inhere/-file00: data
inhere/-file01: data
inhere/-file06: data
inhere/-file03: data
inhere/-file09: data
inhere/-file02: data

Таким образом, файл  inhere/-file07  — файл который мы ищем.

Выполняем команду чтобы узнать пароль от следующего уровня:

cat inhere/-file07

 

Уровень 5.

Уровень 5 похожий на 4-й. тут нам говорят, что пароль для следующего уровня хранится в файле где-то в директории inhere и имеет все следующие свойства:— human-readable — 1033 bytes in size — not executable . Я немного изменил скрипт:

for x in `find . -type d -print`;
    do
        find $x -size 1033c -print;
    done

Пополняем скрипт и получаем вывод:

./maybehere07/.file2
./maybehere07/.file2

Выполняем команду чтобы получить пароль:

cat ~/inhere/maybeinhere07/.file2

 

Уровень 6.

Пароль для следующего уровня хранится где-то на сервере и имеет все следующие свойства: — owned by user mark7 — owned by group mark6 — 33 bytes in size.  Значит, выполняем:

cat `find . -size 33c -group mark6 -user mark7 2>/dev/null`

Получаем вывод файла и выполняем команду для получения пароля:

cat ./var/lib/dpkg/info/mark.password

 

Уровень 7.

Пароль для следующего уровня хранится в файле data.txt рядом со словом millionth

В таком случае выполняем команду:

cat data.txt | grep millionth

 

Уровень 8.

Пароль для следующего уровня хранится в файле data.txt и является единственной строкой текста, которая встречается только один раз. В таком случае на помощь придёт sort:

sort data.txt | uniq -u

Готово:)

 

Уровень 9.

Пароль для следующего уровня хранится в файле data.txt и написан в строке, которая начинается на «=«. Выполним команду:

strings data.txt | grep ======

При выполнении этой команды – пароль будет последним.

 

Уровень 10.

Пароль для следующего уровня хранится в файле data.txt, который содержит данные в кодировке base64. Команда для декодировки:

cat data.txt | base64 --decode

Декодируем файл и получаем результат.

 

Уровень 11.

Пароль для следующего уровня хранится в файле data.txt, где все строчные (az) и прописные (AZ) буквы были повернуты на 13 позиций (так перевёл гугл если что…). решается это командой:

cat data.txt | tr 'n-za-mN-ZA-M' 'a-zA-Z'

 

Уровень 12.

Этот уровень был для меня самый сложным. Я просто напишу список команд которые для меня сработали:

mkdir /tmp/break
cp data.txt /tmp/break
cd /tmp/break
xxd –r data.txt > bandit
mv bandit bandit.gz
gunzip bandit.gz
bzip2 –d bandit
mv bandit.out bandit.gz
gunzip bandit.gz
tar –xvf bandit
tar –xvf data5.bin 
bzip –d data6.bin
tar –xvf data6.bin.out
mv data8.bin data8.gz
gunzip data8.gz

После этого появился файл data8. Именно из файла data8 и вывелся пароль:

cat data8

 

 

Уровень 13.

Пароль для следующего уровня хранится в /etc/mark_pass/mark14 и может быть прочитан только пользователем mark14. Для этого уровня вы не получите следующий пароль, но получите частный ключ SSH, который можно использовать для входа на следующий уровень. в домашней папке лежал файл sshkey.private, это и был приватный ключ.

Выполним команды:

chmod 600 sshkey.private
ssh -i sshkey.private [email protected] /etc/bandit_pass/mark14

И мы подключаемся сразу к следующему без пароля.

 

Уровень 14.

Пароль для следующего уровня можно получить, отправив пароль текущего уровня на порт 30000 на локальном хосте . Значит, узнаём пароль пользователя командой:

cat /etc/bandit_pass/mark14

У меня пароль был таков: 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e

Далее отправляем его на порт 30000 командой:

echo 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e | nc localhost 30000

 

Уровень 15.

Пароль для следующего уровня можно получить, отправив пароль текущего уровня на порт 30001 на локальном хосте с использованием шифрования SSL. Значит. делаем вот такую вот команду:

openssl s_client -ign_eof -connect localhost:30001

 

Уровень 16.

Так как мы знаем пароль, предыдущего пользователя, выполняем команду:

ssh [email protected] “cat readme”

Вот и всё. Всем добра 🙂

Оставьте ответ