w13 – loginpage (Day 13)

Home / Wiki / w13 – loginpage (Day 13)

w13 – loginpage (Day 13)

> ADCTF > ADCTF 2014 > w13 - loginpage (Day 13)

You can’t guess LOGINPAGE_SECRET absolutely, it’s not answer. So, maybe there are some vulnerability and you got an admin and flag. I wrote this web app on Oct. 28 2014. Perl is awesome language and I love it 🙂 loginpage.adctf2014.katsudon.org source

O código do challenge pode ser visto aqui.

Solução

Como podemos ver esse challenge utiliza um framework WEB escrito em perl.

De cara podemos encontrar a primeira vulnerabilidade ao registrar um novo usuário:

Como podemos ver na linha 40, os usuários são cadastrados em um arquivo “user.txt” com o seguinte formato:username:password:flag_is_admin

Podemos criar um novo usuário adicionando “:1” no final da senha, por exemplo:

Vai gerar a seguinte entrada no “user.txt”:

 

Como a rotina de login utiliza o split(“:”) linha 66, os valores de $n, $p e $a serão respectivamente ctfbr_writeup, pass, 1

Conseguimos criar um usuário com “permissões” de admin, mas para obtermos a flag ainda temos que passar em uma segunda checagem:

Durante o login o programa cria um cookie de sessão com os seguintes campos: name, pass, give_me_flag e admin. Esse cookie é protegido por um HMAC-SHA1.

 

 

Agora temos que descobrir uma maneira de settar o cookie give_me_flag para 1 e gerar um hmac-sha1 válido.

Existe uma vulnerabilidade em scripts perl bem descrita em http://blog.gerv.net/2014/10/new-class-of-vulnerability-in-perl-web-applications/ que dependendo do contexto no qual a variável foi acessada, ela é tratada como array ou como scalar.

Temos esta situação no challenge nas linhas 76-77:

Estamos acessando uma varíavel controlado pelo usuário dentro de um contexto de array “{…}”

Podemos usar o seguinte request:

Gerando os seguintes valores no cookie

Como podemos ver:

As demais keys (1, foo e 0) não são acessadas e podem ser ignoradas.
Agora basta acessar a página com este cookie e obter a flag:

the flag is: ADCTF_L0v3ry_p3rl_c0N73x7

Flag

ADCTF_L0v3ry_p3rl_c0N73x7

Criado por

Epic Leet Team

Recent Posts