Great Lakes Security Conference CTF — Hackeando Apps NodeJS — Parte 5

Neptunian
3 min readApr 19, 2021

--

Mr. Roboto

Esta é a parte 5 da Série Great Lakes Security Conference CTF — Hackeando Apps NodeJS.

Este desafio começa com a tela abaixo:

Tela do Desafio Mr Roboto

Não tem nenhum input e nenhum local pra post. O código-fonte também não apresenta nenhuma pista:

<!DOCTYPE html> <html lang="en">  <body> <div>Mr Roboto sez: The flag is not on this page.</div> <div>Note: dirbuster, nikto, etc.. are not needed</div> </body> </html>

Esse desafio é mais no modo mais scavenger hunt (caça ao tesouro), com pistas que levam à próxima pista. A pista é o próprio nome do desafio: “Mr Roboto”. Ele indica que deve ter algo no robots.txt que nos ajude.

Conteúdo do robots.txt

Tem duas pistas aí, mas vamos entender o conteúdo do arquivo escondido /hidden892734569.html. Guarde esse user-agent (kilroy) na cabeça por enquanto, porque ele chama a atenção.

Conteúdo do /hidden892734569.html

A dica, bem óbvia, é procurar o arquivo de estilos CSS (stylesheet). Aqui há uma brincadeira do desafio, onde ele faz uma série de redirects (HTTP 302), até levar você onde está o arquivo style.css correto, no path /css/style.css.

Sequência de redirects do stylesheet CSS

Com isso, chegamos ao CSS que interessa:

CSS com a próxima pista

Ele diz que já passamos por uma interesting clue (pista interessante). Além do que já analisamos (conteúdo de páginas e códigos), o que ficou pra trás foram os conteúdos dentro da comunicação HTTP: os headers. De fato, um header chama a atenção em um dos redirects:

Cabeçalho com a pista “interesting”

Esse cabeçalho interesting não é padrão do HTTP e chama a atenção. Ele também tem um conteúdo que é base64 (denunciado pelo ‘=’ no final). Decodificar esse conteúdo é muito simples, via comando base64 no Linux. Se estiver no Windows, dá pra encontrar uma solução também (eu uso o Git Bash quando estou no Windows), mas tem muitos sites que fazem isso (Google “decode base64 online”).

$ echo "TXIuIFJvYm90byBzZXo6IFRyeSBnb2luZyB0byAvY3NzL3N0eWxlNzU2NDg3NS5jc3M=" | base64 -dMr. Roboto sez: Try going to /css/style7564875.css

A pista aqui é direta para o arquivo específico /css/style7564875.css.

Conteúdo do /css/style7564875.css (parte do meu user-agent removida)

Chegamos a uma nova pista, mas ele pede pra testar com um User-Agent diferente. Qual seria? Pra nossa sorte, ele deu a dica lá em cima (lembra do Kilroy no arquivo robots.txt?). Com isso, é fácil testar um user-agent diferente via comando cURL no Linux (ou via algum plugin no navegador).

curl 'https://host/css/style7564875.css' -H 'user-agent: kilroy'% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed100    54  100    54    0     0     66      0 --:--:-- --:--:-- --:--:--    66Mr. Roboto is proud of you! GLSC{d0m0_4r19470u_h4ck3r}

Mais uma flag pra conta! :)

Referências

--

--