Besoin d'aide pour un Contest :D !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Besoin d'aide pour un Contest :D !

Message par Ar-S »

Salut les copains.

Voilà ce qui me ramène à vous ("miam bon les ramens !" dirait Naruto)
Je participe au conteste proposé par Newbie Contest, au menu différentes catégories d'épreuves :

- Javascript/java
- Cryptographie
- Stenographie
- Hacking
- Cracking
- Logique etc...

Je suis classé dans les 7xx / 9068 pour le moment ce qui n'est pas si mal mais là j'ai besoin de votre aide, Ô programmeurs fous que vous êtes.

Dans cette épreuve joliment appelé "Game Over", je dois trouver un login et un mot de passe pour accéder à une page qui affichera le mot de passe pour valider l'épreuve. La seule méthode possible est le brute force
Donc j'ai chopé le javascript gérant celà :

Code : Tout sélectionner

<script type="text/javascript" language="JavaScript">
	var total_erreur=0;
	function Check() {
	var tabc=Check.arguments; var ok=0;
	var tab="                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
	for (var no=0;no<tabc.length;no++) {
		checksum=tabc[no];
		var login=document.forms["flog"].elements["login"].value;
		var password="souris";
		var nblog=login.length;
		var nbpass=password.length;
		var sum=1;
		var n=Math.max(nblog,nbpass)
		for (var i=0;i<n;i++) {
			var index1=tab.indexOf(login.substring(i,i+1))+10;
			var index2=tab.indexOf(password.substring(i,i+1))+10;
			sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
		}
        if (sum==checksum) {
			window.location="/epreuves/javascript/"+login+".php"; ok=1; no=100;
		}

	}
	if (ok==0) {
		total_erreur++;
		alert("Mauvais login ou mot de passe");
		if (total_erreur>2) {
			alert("Vous avez atteint les 3 essais !\nAu revoir");
			window.location="index.php";
		}
	}
	}
	function Verifie() {
	Check(3696619)
	}
	</script>
	<form onsubmit="Verifie();return false;" action="#" method="get" name="flog">
	<table border="0">
	  <tbody><tr>
		<td>Login : </td>
		<td><input name="login" size="8" type="text"></td>
	  </tr>
	  <tr>
		<td>Password : </td>
		<td><input name="password" size="8" type="text"></td>
	  </tr>
	  <tr>
		<td colspan="2" align="center"><input name="bouton" value="Tester" type="submit"></td>
	  </tr>
	</tbody></table>
	</form>
<hr>
<p class="bold">Validation :</p>
<form method="post" action="index.php?page=valid">
<p class="center"><input name="rep" size="20" type="text"><input name="no" value="100" type="hidden"><input value="Valider l'épreuve" type="submit"></p>
</form>
En le lisant on peut se dire que le nbr de caractères est à limité à 6 (nbr de lettre du mot souris).

Je n'ai AUCUNE idée de comment faire le brute force en PB

Je me dis seulement qu'il faut que je fasse en local une page index.html contenant le javascript ci-dessus (sans la restiction d'essais) et que je fasse une page index.php bidon avec marqué bravo.

Bref, je vais déjà faire une interface graphique et je reviendrai.

En attendant si vous avez des idées. N'hésitez pas ! :wink:
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

je ne comprend pas bien ce que c'est cette page.... pourquoi il y a password="souris" en dur dedans comme ca ????

et ca : Check(3696619) pourquoi ce chiffre en dur ???

bah sinon c'est pas compliqué, tu refait l'algo en purebasic dans une procedure par exemple et tu envoie toutes les combinaisons de login/password à ta procédure...

par contre fait gaffe :
<input name="login" size="8"
apparement ton login et ton pass son limité à 8 caractères (pas 6 comme tu disait)
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

je ne sais pas si c'est moi qui déraille, mais j'ai l'impression que l'algo est loin d'être optimisé...

à la sortie de cette boucle la variable sum devrait toujours être identique
for (var i=0;i<n;i++) {
var index1=tab.indexOf(login.substring(i,i+1))+10;
var index2=tab.indexOf(password.substring(i,i+1))+10;
sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
}
alors je ne comprends pas pourquoi il ont mis cette boucle dans une autre boucle....



ensuite :
if (sum==checksum) {
window.location="/epreuves/javascript/"+login+".php"; ok=1; no=100;
}
ce test est bizarre car à chaque itération la variable sum est identique mais pas la variable checksum. cette variable checksum est en "dur" elle vaut 3, 9, 6, 6, 1 puis 9 à la dernière itération de la boucle principale

en gros ca veut dire que si dès la 1ere itération ce test est "vrai" alors on vas à la page login+".php" sans vérifier le reste de la variable checksum...bizarre bizarre
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Merci pour ce grand début de réponse.
bombseb a écrit :je ne comprend pas bien ce que c'est cette page.... pourquoi il y a password="souris" en dur dedans comme ca ????
Car c'est la taille de l'input text, pas le nbr de caractères !
Et donc on voit password="souris" puis nbpass=password.length
donc nbpass=6 (s1 o2 u3 r4 i5 s6)
et ca répond à ton
<input name="login" size="8"
Sinon
bombseb a écrit : et ca : Check(3696619) pourquoi ce chiffre en dur ???
Oui c'est le problème
bombseb a écrit : bah sinon c'est pas compliqué, tu refait l'algo en purebasic dans une procedure par exemple et tu envoie toutes les combinaisons de login/password à ta procédure...
heu pas compliqué pas compliqué Image
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

j'ai commencé à faire l'algo au boulot en c# car je n'ai pas pb là bas

et ca plante à cause de ca :

Code : Tout sélectionner

var n=Math.max(nblog,nbpass)
      for (var i=0;i<n;i++) {
         var index1=tab.indexOf(login.[b]substring(i,i+1))[/b]+10; 
si la longueur du login est plus petite que celle du mot "souris" alors à un moment i sera trop grand pour pointer sur un caractère du login et la fonction substring plante (normal) alors je pense que le login est une chaine comprise entre 6 et 8 caractères
Mais
apparement ca ne plante pas en javascript (je ne connait pas javascript)

en tout cas j'espere que le mec qui a développé cet algo n'est pas développeur
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

bonjour,

j'ai lu vos posts

je ne voie pas comment envoyer des informations de pb a une page web :? sa doit surement etre dans la fonction network ou un truck du genre fin je verrais bien :wink: .


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

tu peux envoyer des données par POST ou par GET
fait une recherche sur le forum tu vas trouver ton bonheur
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

venom a écrit :je ne voie pas comment envoyer des informations de pb a une page web :?
SUPER FACILE pourtant !
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

SPH a écrit :SUPER FACILE pourtant !

Code : Tout sélectionner

         +-------------------+             .:\:\:/:/:.            
         |   PLEASE DO NOT   |            :.:\:\:/:/:.:           
         |  FEED THE TROLLS  |           :=.' -   - '.=:          
         |                   |           '=(\ 9   9 /)='          
         |   Thank you,      |              (  (_)  )             
         |       Management  |              /`-vvv-'\             
         +-------------------+             /         \            
                 |  |        @@@          / /|,,,,,|\ \           
                 |  |        @@@         /_//  /^\  \\_\          
   @x@@x@        |  |         |/         WW(  (   )  )WW          
   \||||/        |  |        \|           __\,,\ /,,/__           
    \||/         |  |         |          (______Y______)          
/\/\/\/\/\/\/\/\//\/\\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
==================================================================
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Bon me voilà dans le top 500, j'ai laissé pour le moment de coté cette épreuve en me focalisant sur la prog php et la crypto dans lesquelles j'ai plus de facilités.
J'y reviendrai plus tard. :P
Répondre