Engineering, coding and games

Tag: hacking

try2hack.nl: Level 4

O nível 4 é parecido com o 2, pois o processo de autenticação é feito por um objeto (nada de javascript com a senha). Dessa vez, temos um Applet.

Para começar, baixei o objeto. Depois usei esse descompilador java (é só arrastar o arquivo .class para cima do texto “Drop class and inner class files here“).

Eu não entendia muito de java quando cheguei no nível 4 pela primeira vez, mas olhando BEMMM o código, me parece que um outro arquivo (que contém a senha) é aberto para fazer a autenticação. Então o código abaixo me chamou a atenção:

this.infile = new String("level4");
try
{
   this.inURL = new URL(getCodeBase(), this.infile);
}
catch (MalformedURLException localMalformedURLException)
{
   getAppletContext().showStatus("Bad Counter URL:" + this.inURL);
}
inFile();

Primeiramente, o nome do arquivo é definido (“level4″). A princípio, parece estranho por não haver extensão, mas se acessarmos pelo endereço correto (“www.try2hack.nl/levels/level4“) podemos baixar o arquivo.

E, finalmente, ao abrir com o bloco de notas temos:

level5-fdvbdf.xhtml (link para o nível 5)
appletking (usuário)
pieceofcake (senha)

Apesar de simples, o nível 4 exigiu mais passos que os anteriores, porém o problema ainda é o mesmo: validação client-side.

O que aprender com o nível 4?

Apesar de os dados não estarem dispostos em texto puro, muito provavelmente existirá um descompilador para qualquer tipo de midia/objeto/bytecode que você utilizar. Você pode usar flash, applets, activex controls, etc… desde que a validação seja SEMPRE no servidor.

try2hack.nl: Level 3

O nível 3 é um saco pra quem não sabe o que fazer. Primeiro: se você erra a senha ou cancela o prompt, você é redirecionado para o site da Disney.

Pô! Assim não dá pra ver o fonte… o botão direito não mostra o menu. Esse web-designer sacaneou legal! Que eu faço?

Começa descobrindo a tecla de atalho para ver o código (CTRL+U no meu Firefox) ou você pode encontrar esta opção no menu “Exibir”.

<script type="text/javascript">
 <!--
    pwd = prompt("Please enter the password for level 3:","");
if (pwd==PASSWORD){
alert("Allright!\nEntering Level 4 ...");
location.href = CORRECTSITE;
}
else {
alert("WRONG!\nBack to disneyland !!!");
location.href = WRONGSITE;
}
PASSWORD="AbCdE";
CORRECTSITE="level4-sfvfxc.xhtml";
WRONGSITE="http://www.disney.com";
 //-->
 </script>

Aí você, muito malandro, acha que a senha tá fácil e coloca lá: AbCdE
ou tenta acessar level4-sfvfxc.xhtml

Ai, caramba! Pero estoy seguro que el amor se acaba!

Se você olhar o código mais atentamente, pode ver que as variáveis recebem os valores APÓS a validação, ou seja, há algo errado.

É claro que você percebeu antes de eu falar, mas o código abaixo está meio estranho:

<script type="text/javascript" src="JavaScript"></script>

Como assim? o atributo “src” define o nome do arquivo que contém um script. Ou seja, se você acessar http://www.try2hack.nl/levels/JavaScript (Salvar link como…) poderá ver o valor inicial das variáveis:

PASSWORD = "try2hackrawks";
CORRECTSITE = "level4-kdnvxs.xhtml";
WRONGSITE = "http://www.disney.com";

Aí ficou fácil!

O que aprender com o nível 3?

A mesma coisa que nos outros dois níveis: não adianta tentar esconder. Se a senha estiver no computador do usuário, uma hora seu sistema será acessado por indivíduos não autorizados.

try2hack.nl: Level 2

O segundo nível ainda é um desgosto para qualquer um que se preocupa com segurança. Apesar do código de validação não estar exposto no código-fonte da página, os dados “Usuário” e “Senha” estão armazenados no arquivo “.swf” (flash), que exibe o formulário de login.

Ok! E como eu “abro” o swf?

Primeiro, vamos baixar o arquivo. Se você não sabe como baixar, é só clicar AQUI com o botão direito do mouse e selecionar a opção “Salvar link como…” (Firefox).

Para abrir o arquivo, você pode baixar um SWF Decompiler e ver o que o código faz exatamente. Mas como a segurança foi tão porcamente pensada, você pode usar o bloco de notas mesmo.

Abrindo o “level2.swf” no bloco de notas, basta localizar (F3) “txtUsername” ou “txtPassword”. O suposto programador é tão “bom” que, além de poder ver usuário e senha em texto puro, podemos ir para o próximo nível sem precisar efetuar a validação no site, pois sabemos que está em “./level3-.xhtml”. Não sabe onde colar isso? Darwin…

O que aprender com o nível 2?

Não adianta tentar esconder usuário e senha. Se você deixar esse tipo de validação para o computador do usuário, SEMPRE vai ter algum fidimascate que vai descobrir.

try2hack.nl: Level 1

try2hack.nl é um site que disponibiliza alguns desafios relacionados à segurança. Apesar de ser apenas um game, cada nível mostra um tipo de falha que ainda são comuns, graças à impudência de alguns administradores e programadores. Como eu tive uma certa dificuldade na maioria dos níveis, resolvi escrever sobre os métodos que utilizei, pois tenho certeza que alguém sabe uma maneira mais fácil.

Nível 1:
O primeiro nível é bem simples pode ser resolvido com uma rápida análise do código-fonte da página.

Quê?! Código-fonte?

Se você não sabe olhar o código-fonte de uma página, provavelmente não sabe o que é html e, muito menos, javascript. Ou seja, estude muito antes de tentar se aventurar nesse tipo de game.

Ok, qualquer ameba sabe que a validação de usuário/senha DEVE ser feita no servidor. Você pode até validar alguns outros campos (CPF, por exemplo) no browser com javascript, mas SEMPRE deve haver a mesma validação no servidor (burlar esse tipo de validação é relativamente simples).

Certo, olhando o código-fonte, achamos a senha no trecho:

<script type="text/javascript">
<!--
   function Try(passwd) {
      if(passwd == "h4x0r") {
         alert("Alright! On to level 2...");
         location.href = "level2-xfdgnh.xhtml";
      }
      else {
         alert("The password is incorrect. Please don't try again.");
         location.href = "http://www.disney.com/";
      }
 }
//-->
</script>

Será que existe MESMO alguém que ainda faz isso? Darwin… Darwin…

O que aprender com o nível 1?

Que, apesar de 90% dos usuários não saberem ler javascript ou se quer ver o código-fonte de uma página, não devemos deixar esse tipo de código/validação exposto para os usuários.

© 2026 delarco

Theme by Anders NorenUp ↑