Mensagens

A mostrar mensagens de outubro, 2020

DIAS#68-70-HackerRank-Bash

     Nestes dias mudei de site, agora com um foco mais virado para a aprendizagem de skills de programação mais básicos, de modo a ajudar tanto na criação de scripts como na compreensão de código. Desse modo fui ao site " https://www.hackerrank.com ", onde se pretende ensinar e avaliar os utilizadores de modo a arranjar possíveis trabalhos.     Numa primeira fase foquei-me na prática de bash onde me foram apresentados diferentes exercícios, desde o clássico "Hello World" até à impressão de uma estrutura razoavelmente complexa no terminal. Durante este processo descobri várias coisas, incluindo o facto deste tipo de programação ser o mais picuinhas (que vi até hoje) relativamente aos espaços, se há algum erro o mais provável é que esteja a acontecer devido a ter um espaço a mais ou a menos, para além disso descobri: Que para obter ajuda de comandos a usar em bash, no Gitbash, usa-se " bash -c "help <nome do comando>" ", por exemplo:...

DIA#67-OverTheWire-Bandit (LVL 33)

Imagem
     Continuo no OverTheWire desta vez para o nível 33. Onde se começa a partir do nivel anterior onde se ficou num "UPPERCASE TERMINAL", aqui vai-se usar " $0 " para invocar a shell       Após entrar na shell usou-se  " find / -type d -name '*pass*' 2>/dev/null " para procurar em todas as diretorias algo do tipo ficheiro com o nome que contivesse "pass" algures na palavra, enviando os erros para outro lado, de modo a não encher o terminal.       A partir dai mudei para uma das diretorias que apareceram com " cd /etc/bandit_pass ", que é a diretoria onde se encontram as passwords, entre elas a do nivel " bandit33 ", que tem como owner bandit33. Nessa altura uso " whoami " para saber com qual utilizador estou a correr o terminal, que é o bandit33, logo posso usar " nano bandit33 ", de onde retiro a password "c9c3199ddf4121b10cf581a98d51caee".       A partir daí, repete-se o que se tem fe...

DIA#66-OverTheWire-Bandit (LVL 32)

Imagem
     Continuo no OverTheWire desta vez para o nível 32. No qual se começou por clonar um repositório como no  nível 27 , a partir de onde se obtém um ficheiro " README.md ", que contém:           Seguidamente usa-se " echo "May I come in?">key.txt " para criar o ficheiro key.txt com o texto "May I come in?".         Depois para adicionar o ficheiro ao index usa-se " git add -f key.txt ", usa-se a flag " -f " para forçar a passagem do ficheiro como se pode ver de seguida.          Finalmente usa-se " git commit -m key.txt " para gravar o ficheiro no  repositório e " git push origin master " para fazer upload do repositório local para o repositório remoto.      Aqui obtém-se a password " 56a9bf19c63d650ce78e6ec0354ee45e".          A partir daí, repete-se o que se tem feito usando de " ssh bandit32@bandit.labs.overthewire.org -p2...

DIA#65-OverTheWire-Bandit (LVL 31)

Imagem
     Continuo no OverTheWire desta vez para o nível 31. No qual se começou por clonar um repositório como no  nível 27 , a partir de onde se obtém um ficheiro " README.md " que não tem nada.      Hoje para obter a password foi necessário, usar o comando " tag ", usado para criar, ver ou eliminar tags de pontos específicos na história do repositório. Começou-se por se usar " git tag " para ver as tags existentes, que originou.        A partir daí usa-se " git show secret ", sendo " show " um comando usado para mostrar diversos tipos de objectos, de onde se obtém a password "47e603bb428404d265f59c42920d81e5".      Seguidamente repete-se o que se tem feito usando de " ssh bandit31@bandit.labs.overthewire.org -p2220 " colocando-se posteriormente a password obtida.

DIA#64-OverTheWire-Bandit (LVL 30)

Imagem
     Continuo no OverTheWire desta vez para o nível 30. Neste nível volta-se a clonar um repositório como no nível 27 , a partir daí, não se obteve qualquer password, mesmo que "mascarada", tentou-se também ver os logs, como no nível 29 , mas continuou-se a não encontrar nada.       Para ir buscar a password foi-se procurar os branches que existem no repositório com " git branches -a " e começou-se a tentar encontrar mais informação em cada um deles com " git checkout <nome do branch> ", que neste caso foi o branch " dev ", ou seja, usou-se " git checkout dev " onde obteve-se.     O nde se encontrou a password "5b90576bedb2cc04c86a9e924ce42faf".      Seguidamente repete-se o que se tem feito usando de " ssh bandit30@bandit.labs.overthewire.org -p2220 " colocando-se posteriormente a password obtida. Pode-se ver o processo em baixo.

DIA#63-OverTheWire-Bandit (LVL 29)

Imagem
     Continuo no OverTheWire desta vez para o nível 29. Este nível foi semelhante inicialmente semelhante ao anterior , a unica diferença notou-se ao abrir o ficheiro " README.md ", que se obteve, e apareceu o seguinte.        Ou seja está-se a simular o caso de alguém ter feito um patch e protegido a password, para ver que paches foram feitos no repositório usou-se " git log " que apresentou.      O que confirmou que existiu um patch, para ver o que foi feito nesses patches usou-se " git log -p " que mostrou, entre outras coisas.        Ficando então saber que a password do nível 29 é "bbc96594b4e001778eee9975372716b2".      Seguidamente repete-se o que se tem feito usando de " ssh bandit29@bandit.labs.overthewire.org -p2220 " colocando-se posteriormente a password obtida.

DIA#62-OverTheWire-Bandit (LVL 28)

Imagem
     Continuo no OverTheWire desta vez para o nível 28. Este nível foi bastante simples, o maior problema foi encontrar um directoria com permissão para clonar o repositório do git, para ultrapassar este obstáculo, usou-se " ls -la " para ver as permissões de todos os ficheiros da directoria e enquanto não se observou nenhuma directoria com permissões de write foi-se usando " cd .. " para ir para a directoria anterior. Depois de repetir este processo algumas vezes cheguei à directoria " /tmp ", onde finalmente se podia escrever.Aí usei o comando " git clone ssh://bandit27-git@localhost/home/bandit27-git/repo " para clonar o repositório. Seguidamente mudei de directoria para " ./repo " com  " cd repo ", onde estava o ficheiro " README ", no qual encontrei a password   "0ef186ac70e04ea33b4c1853d2526fa2".      A partir daí, repete-se o que se tem feito usando de " ssh bandit28@bandit.labs.overthewire.org ...

DIA#61-OverTheWire-Bandit (LVL 27)

Imagem
    Continuo no OverTheWire desta vez para o nível 27. Neste nível deve-se começar onde se acabou o nível 26, num terminal vim. Aqui usa-se " :set shell ? " e observamos que se está ainda a correr a shell do nível anterior, " /usr/bin/showtext " que apenas faz o print da string e fecha a execução.  Isto não permite que se use os comandos necessários para chegar ao nível 27, que neste caso é o " bandit27-do ".     Vai-se então colocar uma nova shell com ": set shell=/bin/bash ", a partir daqui pode-se usar " :shell " para abrir uma shell bash onde se faz " ./bandit27-do " para descobrir que com este executável se correm comandos como se fosse o utilizador " bandit27 ". Finalmente correr-se então " ./bandit27-do cat /etc/bandit_pass/bandit27 ", de onde se retira "3ba3118a22e93127a4ed485be72ef5ea".     Seguidamente repete-se o que se tem feito usando de " ssh bandit27@bandit.labs.overthewire.org...

DIA#60-OverTheWire-Bandit (LVL 26)

Imagem
     Continuo no OverTheWire desta vez para o nível 26. Neste nível era necessário arranjar maneira de "empancar" o processo a ser corrido quando se entra no nível 26.     Antes disso era preciso de entrar no  nível 26, que se iria fazer com " ssh -i bandit26.sshkey bandit26@localhost ", onde se observou que depois de imprimir.           Para se saber mais sobre o user " bandit26 " consultou-se com " cat /etc/passwd " o ficheiro que guarda registos de todos os users criados, neste caso como se quer informação sobre " bandit26 ", usou-se " cat /etc/passwd | grep bandit26 ", onde apareceu informação relativa a um programa a ser corrido quando se conecta. Para mostrar o que está a ser corrido usou-se " cat /usr/bin/showtext ", que mostrou o seguinte script.     Que usa " export TERM=linux " para determinar o emulador do terminal ser linux, depois usa " more ~/text.txt " para fazer print do bandit26 a...

DIA#59-OverTheWire-Bandit (LVL 25)

Imagem
     Continuo no OverTheWire desta vez para o nível 25. Hoje era pedido para enviar para um processo a correr em backgound, que está à escuta no port 30002 pela password do nível 24 e um conjunto aleatório de 4 dígitos separados por um espaço, para saber que string deve ser enviar para o processo vai-se usar bruteforce.     Antes de implementar o script para o bruteforce foi necessário antes de mais nada usar o comando " find / -perm -777 -type f 2>/dev/null " para saber de directorias com permissões para poder criar, ler e executar o script a ser criado (apenas era necessário poder criar) onde encontrei a directoria " /var/spool/bandit24/ ", a partir dai fui para a directoria, onde usei " ls -la " para voltar a ver as permissões das pastas dentro da directoria, aí escolhi a directoria " pass " onde coloquei o seguinte script.           Em que se vai correr ciclos com a variável " i " variar de " {0000..9999} " e em cada um...

DIA#58-OverTheWire-Bandit (LVL 24)

Imagem
     Continuo no OverTheWire desta vez para o nível 24. Neste nível existia um script a correr em " /etc/cron.d/ ", que de minuto em minuto, através do utilizador " bandit24 ", executava qualquer ficheiro não oculto (sem um ponto no seu inicio) e que não fosse a directoria anterior (dois pontos), para além disso também teria que ter como owner " bandit23 ", tudo isto na directoria " /var/spool/$myname " (" $myname " é igual a bandit24 devido ao script ser corrido por bandit24). Depois da execução o ficheiro é eliminado.      Tendo tudo isto em conta, começa-se por criar uma directoria com " mkdir workspace ", onde vamos guardar inicialmente o script criado com " nano index.sh ", onde se colocou.      De modo a passar a password para um ficheiro na directoria criada anteriormente. Seguidamente usa-se " cp index.sh /var/spool/bandit24 " para copiar o script para ser corrido. Passado 60 segundos irá aparecer u...

DIA#57-OverTheWire-Bandit (LVL 23)

Imagem
     Continuo no OverTheWire desta vez para o nível 23. Este nível é semelhante ao nível 22 , mudando apenas o script usado no ficheiro, que é apresentado de seguida.        Em que, como é possível observar, se obtém o ID do user efectivo com " whoami ", ID esse que irá ser usado para construir a hash de 128 bits expressa em 32 caracteres com " md5sum ", de onde se retira o " - " que iria aparecer no echo de " md5sum " (" 8169b67bd894ddbb4412f91573b38db3  - "), com o uso de " cut ". A string obtida determina como se chama o ficheiro na directoria " tmp ", que vai receber a password de " bandit23 ".     O problema é que com  " whoami " se obtém " bandit22 ", o que irá levar a ser dada a password de " bandit22 " e não de " bandit23 ". Para ultrapassar esse problema vai-se usar directamente " echo mytarget=$(echo I am user bandit23| md5sum | cut -d ' ' -f 1...