The power of root

Over The Wire - War Games Level 6 - 10

sáb 18 abril 2015 wargame / linux / hacker / hacking / seguranca /

Fala galera!!! Vamos continuar subindo de level no Over The Wire.

Level 6

A partir daqui parece que a coisa está começando a ficar um pouco mais complexa, estamos começando a usar comandos com alguns parametros, nada muito diferente do level 5 acrescentando apenas 2 parametros a mais.

bandit6@melinda:~$ find / -size 33c -group bandit6 -user bandit7
/var/lib/dpkg/info/bandit7.password
bandit6@melinda:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

Pronto, conseguimos encontrar nosso arquivo.

Level 7

Aqui devemos encontrar a senha dentro do arquivo data.txt após a palavra millionth e se você igual eu deu logo um cat data.txt notou que não vai ser fácil encontrar a senha desse jeito, devem ter notado que o arquivo segue um padrão, uma palavra seguida se uma 'senha', portanto para encontrarmos a linha com o millionth vamos usar o comando grep:

..code-block:: bash

bandit7@melinda:~$ cat data.txt | grep millionth millionth cvX2JJa4CFALtqS87jk27qwqGhBM9plV

Pronto, encontramos a nossa senha no meio de tantas linhas.

Level 8

Agora ficou um pouco complicado, vamos ler atentamente a descrição do desafio.

The password for the next level is stored in the file data.txt and is the only
line of text that occurs only once

Commands you may need to solve this level

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Sabemos que a senha está dentro do arquivo data.txt e que ela é apresentada em uma única linha dentro do arquivo. Então vamos elaborar nosso comando:

  1. Se simplesmente rodarmos o comando cat data.txt vamos receber várias linhas todas embaralhadas.
  2. Vamos melhorar um pouco entao rodando o comando cat data.txt | sort, agora vimos que a listagem ficou ordenada, mas com vários registros repetidos, podemos melhorar ainda mais.
  3. Vamos elimitar os vários registros repetidos com o comando cat data.txt | sort -u, opa!!! Está melhorando.
  4. E por final vamos pedir para retornar apenas os registros que forem únicos dentro do arquivo com o comando cat data.txt | sort | uniq -u, pronto agora temos a nossa senha.
bandit8@melinda:~$ cat data.txt | sort | uniq -u
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

Level 9

Precisamos encontrar a senha dentro do arquivo data.txt onde encontra-se após vários '=', nesse nível se rodarmos um cat data.txt e procurar um pouco podemos encontrar a senha masssssss se o arquivo fosse gigantesco se tornaria inviável ficar procurando os vários '=', portanto vamos elaborar um pouco o nosso mecanismo de busca dentro desse arquivo pegando como dica o comando strings

STRINGS(1)                    GNU Development Tools                   STRINGS(1)

NAME
       strings - print the strings of printable characters in files.

SYNOPSIS
       strings [-afovV] [-min-len]
               [-n min-len] [--bytes=min-len]
               [-t radix] [--radix=radix]
               [-e encoding] [--encoding=encoding]
               [-] [--all] [--print-file-name]
               [-T bfdname] [--target=bfdname]
               [--help] [--version] file...

DESCRIPTION
       For each file given, GNU strings prints the printable character sequences
       that are at least 4 characters long (or the number given with the options
       below) and are followed by an unprintable character.

       Depending upon how the strings program was configured it will default to
       either displaying all the printable sequences that it can find in each
       file, or only those sequences that are in loadable, initialized data
       sections.  If the file type in unrecognizable, or if strings is reading
       from stdin then it will always display all of the printable sequences
       that it can find.

       For backwards compatibility any file that occurs after a command line
       option of just - will also be scanned in full, regardless of the presence
       of any -d option.

strings is mainly useful for determining the contents of non-text files.

O comando strings retornar os caracteres legíveis dentro de um arquivo, quando rodamos o cat data.txt notamos que o arquivo está cheio e caracteres não legíveis e como sabemos que a senha se encontra após vários '=' vamos casar o comando com o grep =.

bandit9@melinda:~$ strings data.txt | grep =
epr~F=K
7?YD=
?M=HqAH
/(Ne=
C=_"
I========== the6
z5Y=
`h(8=`
n\H=;
========== password
========== ism
N$=&
l/a=L)
f=C(
========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
ie)=5e

A senha para o próximo nível é: truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

Level 10

Nesse nívels temos a seguinte string dentro do arquivo data.txt: VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg== e conforme a descrição do desafio a string está codificada em base64

Podemos encontrar a senha de duas formas:

  1. Rodando diretamente o comando base64 com o parametro -d para decodificar conforme encontra-se nas dicas dos possíveis comandos a serem usados:

    bandit10@melinda:~$ cat data.txt
    VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg==
    bandit10@melinda:~$ base64 -d data.txt
    The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR
    
  2. E do modo pythonista com o seguinte script:

    #!/usr/bin/python
    # -*- encoding: utf-8 -*-
    
    import base64
    
    string = "VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg=="
    
    print(base64.b64decode(string))
    
    emilio Python $ python3 dec64.py
    b'The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR\n'
    

Vou encerrando esse post por aqui com a senha para o level 11.

Abraços

on the top

Comments