lundi 27 février 2012

Logique / Retour en primaire ?

Titre de l'épreuve : Retour en primaire ?


Description :
Qu'y a-t-il de compliqué ? Vous faisiez ça en CE1 !

Epreuve :
http://www.newbiecontest.org/index.php?page=epreuve&no=201

Pour valider, entrez le produit des restes des divisions euclidiennes de :

2^10 par 3
54^2003 par 7
2003^444002 par 149
1000000^184651 par 36931

Explication :
La résolution de l'épreuve peut se faire avec un programme très simple, voici un exemple en javascript :

Cliquez pour agrandir


samedi 25 février 2012

Logique / Caramels, sucettes et berlingots

Titre de l'épreuve : Caramels, sucettes et berlingots


Description :
Entrez la solution avec une virgule, formatée comme les prix dans l'énoncé sans le symbole €.

Épreuve :
http://www.newbiecontest.org/index.php?page=epreuve&no=127

Deux caramels, cinq sucettes et quatres berlingots coûtent ensemble 1,94€.
Trois caramels, cinq sucettes et un berlingot coûtent ensemble 1,66€.

Combien coûte un lot formé de deux caramels, sept sucettes et huit berlingots ?

Explication :
Pour résoudre ce système, on utilise le pivot de gauss, voici les étapes à suivre :

On a comme équations :
2c + 5s + 4b = 1.94             [L1]
3c + 5s + b = 1.66               [L2]
2c + 7s + 8b = x                  [L3]

On élimine les 5s dans L1 et L2 :
5s = - 2c - 4b + 1.94
5s = -3c - b + 1.66

d'où - 2c - 4b + 1.94 = -3c - b + 1.66 et on obtient c = 3b - 0.28

On remplace dans la première équation L1 :

2*( 3b - 0.28) + 5s + 4b = 1.94
6b - 0.56 + 5s + 4b = 1.94
5s + 10b = 2.5

5s = 2.5 - 10c
s  = 0.5 - 2c

Résolution en remplaçant s et c dans l'équation : 2c+7s+8b=x


jeudi 23 février 2012

Programmation / Apprenons à lire

Titre de l'épreuve : Apprenons à lire


Description :
Voilà la première épreuve d'un groupe de deux sur le travail d'image.
Celle-ci consiste à lire la chaîne de caractères sur l'image ci-dessous.Elle est composée seulement de caractères alphanumériques.
Une fois trouvée, vous devez la renvoyer à la page verifpr10.php en moins d'une seconde sous la forme : verifpr10.php?chaine=xxx.Notes : la chaîne est sensible à la case et il est nécessaire de coder un programme en local pour réussir cette épreuve.

Explication :
Il est nécessaire de récupérer le texte écrit sur l'image puis de renvoyer la réponse sur la page de réponse.
Pour cela on utilise un OCR (Optical character recognition) qui va s'occuper de récupérer directement les caractères visibles sur l'image.

Voici un code en php qui exploite un logiciel d'OCR :

Cliquez pour agrandir



dimanche 19 février 2012

Programmation / Second degré

Titre de l'épreuve : Second degré


Description :
Ouvrez la page prog6.php.
Elle vous attribue alors une équation que vous devez résoudre. Cette équation a été conçue pour avoir toujours deux solutions distinctes. Le but du jeu sera de renvoyer la plus grande des deux solutions (tronquée à 2 chiffres après la virgule, par exemple : 5.26) à la page verifpr6.php, le tout en moins de 1 seconde, sous la forme verifpr6.php?solution=resultat.
Il est nécessaire de coder un programme en local pour réussir cette épreuve.

Explication :
Voici un exemple de code fonctionnel pour résoudre cette épreuve :

Cliquez pour agrandir

Programmation / Quand le jazz est là

Titre de l'épreuve : Quand le jazz est là


Description :
Un newbie est passé sur ton PC et a touché à ton code Java. Malheur!, ce dernier ne compile plus. 3 erreurs de compilation s'y sont glissées. Retrouve les et exécute ce petit programme pour valider. Soit e1, e2 et e3 les lignes comprenant une erreur et r le résultat affiché par le programme, le passe pour valider est : e1² * e2² * e3² * r².

Explication :
Il y a donc trois erreurs dans ce code, voici les corrections

ligne 4 : for (int k= 0 ; k<128 ; k++) {
ligne 7 : System.out.println(" i : " + i);
ligne 10 : for (int k = 0;k<str.length()/3;k++) {


samedi 18 février 2012

Logique / Suite numérique 2

Titre de l'épreuve : Suite numérique 2


Description :
Le but de cette épreuve est de trouver l'élément suivant de cette suite logique :

Epreuve :
1
2
12
264
22704
??

Explication :
Dans un premier temps on décompose les termes en multiplications logique :

1
2 = 1*2
12 = 2*6
264 = 12*22
22704 = 264 * 86

On obtient la suite : 2 6 22 86. En faisant des soustractions entre les termes on obtient :

6 - 2 = 4 = 2²
22 - 6 = 16 = 4²
86 - 22 = 64 = 8²

Le prochain terme devrait donc être 16²=256.
On additionne donc 256 avec 86 pour avoir le chiffre multiplicateur qui va nous faire passer au terme suivant pour la suite de l'épreuve : 256 + 86 = 342


Logique / Nombre de carrés

Titre de l'épreuve : Nombre de carrés


Description :
Combien de carrés peut-on faire ?

Epreuve :
Explication :
Il faut compter les carrés de côtés : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 et additionner l'ensemble pour obtenir le nombre de carrés final.


Logique / Suite numérique 3

Titre de l'épreuve : Suite numérique 3


Description :
Trouvez le terme suivant de cette suite :

Epreuve :
2,5,15,18,54,57,??

Explication :
On ajoute 3 au premier terme pour obtenir le deuxième terme puis on multiplie par 3 ce terme obtenu.


Logique / Suite numérique 1

Titre de l'épreuve : Suite numérique 1


Description :
Bienvenu(e) sur la toute première épreuve de logique.Rien de très compliqué : vous devez trouver l'élément suivant de la suite logique.

Epreuve :
221
2211
2221
3211
??

Explication :
C'est la suite de Conway dit suite "audioactive", c'est-à-dire que pour trouver le terme suivant, il suffit de décrire à l'oral les chiffres qui constitue le précédent terme.

exemple : 221 - ??
il y a 2 deux et 1 un : 2211


Crackme / Are you the number one ?

Titre de l'épreuve : Are you the number one ?


Description :
Crakme n°4

Explication :
Importer le fichier dans WinDasm, dans la liste des StringsReferences on voit que le programme nous demande de rentrer le mot de passe. En regardant sous l'instruction qui demande le pass, on a une instruction assembleur de comparaison :

CMP DWORD PTR DS:[405040],163B37

On peut déduire que la valeur entré par l'utilisateur sera comparé avec la valeur "163B37". Or cette valeur est en hexadécimale et n'est pas la bonne réponse. Il faut alors convertir la valeur en base décimale (base 10) pour avoir la solution.


Crackme / Hello, World

Titre de l'épreuve : Hello, World


Description :
Crackme n°6 : document Word (de AlexxKid)


Explication :
Ouvrez le fichier doc dans Notepad++ et chercher la chaîne "password" pour le trouver.


Crackme / Visuel et basique

Titre de l'épreuve : Visuel et basique


Description :
Bienvenu(e) sur la toute première épreuve de Crack-me.Toutes les épreuves de cette catégorie ont le même but : trouver comment cracker le programme fourni (codé par Folcan).

Explication :
En ouvrant le fichier dans un éditeur hexadécimale (WinHex), on trouve facilement le mot de passe en clair.


Hacking / Upload II

Titre de l'épreuve : Upload II


Description :
Formulaire d'upload

Explication :
Ici il s'agit d'essayer d'uploader un fichier php en le faisant passer pour une image.
Avec l’extension firefox "Live HTTP Header" vous pouvez voir les entêtes http et les modifier à votre guise.
Pendant l'upload d'une image test sur l'épreuve on peut voir dans les entêtes que le content-type est "image/png". Maintenant réessayons avec un fichier php, l'entête est alors text/html.

Le but va être de relancer ces mêmes entêtes mais en modifiant le content-type qui deviendra : image/png pour faire croire au serveur que l'on envoi une image.

mardi 14 février 2012

Programmation / Crypto

Titre de l'épreuve : Crypto


Description :
Ouvrez la page prog5.php.
Elle vous attribue alors une cryptographie que vous devez casser puis renvoyer à la page verifpr5.php en moins de 1 seconde.
Vous devez renvoyer ce nombre sous la forme : verifpr5.php?solution=resultat. Il est nécessaire de coder un programme en local pour réussir cette épreuve.

Explication :
Le code a été chiffré avec le code "César", c'est un code cryptographique à décalage utilisé par Jules César pour chiffrer ses conversations militaires.
Par exemple avec une décalage de 3, la lettre a devient d, b devient e, etc.

Voici un code possible parmi tant d'autres :

Cliquez pour agrandir


Programmation / Equation

Titre de l'épreuve : Equation


Description :
Le principe de cette épreuve est de faire un script qui résout une équation simple.
Celle-ci vous sera donnée par la page prog4.php.Vous devez renvoyer le résultat à la page verifpr4.php en moins de une seconde sous la forme verifpr4.php?solution=resultat.
Notes : le nombre y sera la partie entière du résultat et il est nécessaire de coder un programme en local pour réussir cette épreuve.

Explication :
Encore une fois il est possible de résoudre cette épreuve par diverse méthodes et langages, voici un exemple qui marche.

Cliquez pour agrandir



Programmation / Racine

Titre de l'épreuve : Racine


Description :
Vous avez à ouvrir deux pages qui vous attribueront chacune d'elle un nombre aléatoire.
Vous devez effectuer l'opération y=racine(a)*b où a est le nombre de la page 1 et b le nombre de la page 2.
Une fois le nombre y calculé, vous devez le renvoyer à la page verifpr3.php en moins de deux secondes sous la forme : verifpr3.php?solution=y.
Notes : le nombre y sera la partie entière du résultat et il est nécessaire de coder un programme en local pour réussir cette épreuve.

Explication :
Voici un exemple de code parmi ceux possible :



Cliquez pour agrandir


Programmation / Renvoi

Titre de l'épreuve : Renvoi


Description :
Ouvrez la page prog1.php.
Elle vous attribue alors un nombre aléatoire que vous devez renvoyer à la page verifpr1.php en moins de 1 seconde.Vous devez renvoyer ce nombre sous la forme : verifpr1.php?solution=nombre.
Il est nécessaire de coder un programme en local pour réussir cette épreuve.

Explication :
Il y a plusieurs manière de faire cette épreuve :
  • Avec une regex : [0-9]
  • Avec la fonction explode sur ':' (on coupe la chaîne de caractère en deux)
  • Lire la chaîne à partir de l'index 50 à 65 (la partie de la chaîne qui correspond au nombre)
Voici un exemple d'un code possible :

Cliquez pour agrandir


dimanche 12 février 2012

Stéganographie / Noping in progress

Titre de l'épreuve : Noping in progress


Description :
NOPING IN PROGRESS

Explication :
De la même manière que pour la première épreuve, ouvrez le logiciel dans Notepad++ et faite une recherche avec "pass" pour trouver la solution.


Stéganographie / SteganoVideo

Titre de l'épreuve : SteganoVideo


Description :
Play me

Explication :
Il suffit de lire la vidéo image par image.


Sténographie / Un son venu d'un autre monde...

Titre de l'épreuve : Un son venu d'un autre monde...


Description :
Un son venu d'un autre monde...

Explication :
En écoutant le son, il est impossible de distinguer quoi que ce soit. Il est nécessaire d'utiliser Audacity pour ralentir le son et réglant de la bonne manière on trouve le mot de passe.


Sténographie / Ethique du hacker

Titre de l'épreuve : Ethique du hacker


Description :
L'éthique du hacker cacherait-elle un mot de passe ?

Explication :
Le texte sur l'éthique du hacker renferme un secret ! Prenez la première lettre de chaque phrase et vous aurez la solution.


Stéganographie / SCREEN 13

Titre de l'épreuve : SCREEN 13


Description :
Arriverez vous à faire la lumière sur cette épreuve ?

Explication :
Comme l'indique la description, ouvrez l'image dans paint et remplissez le de blanc et vous verrez le mot de passe.


Sténographie / Pour commencer

Titre de l'épreuve : Pour commencer


Description :
Bienvenu(e) sur la toute première épreuve de Stéganographie.Rien de complexe : vous devez trouver le code caché dans le programme du lien ci-dessous et l'entrer dans le champs de validation.

Explication :
En ouvrant le fichier exécutable dans Notepad++ vous trouverez le mot de passe inscrit.


Sténographie / Cherche plus loin que le bout de ton nez

Titre de l'épreuve : Cherche plus loin que le bout de ton nez


Description :
Cherche plus loin que le bout de ton nez

Explication :
A première vue il n'y a rien écrit dans l'épreuve, mais un tour dans la source vous mettera la puce à l'oreille : le mot de passe est bien présent, mais de même couleur que le fond du site, donc invisible !


Javascript / Ne loupez pas le coche !

Titre de l'épreuve : Ne loupez pas le coche


Description :
L'epreuve est trés simple : vous devez cocher les checkbox ci-dessous et valider.By Kernox Updated by Perfect Slayer

Explication :
Cette épreuve, assez sournoise, vous demande de cocher toutes les cases du formulaire.
En regardant le code (ou en essayant de toute les cochez) vous constaterez que les checkbox se décoche toute seule.

Pour éviter ça et valider l'épreuve, il faut éditer le code javascript directement à partir du navigateur avec l'option "Inspecter cet élément" du clic droit.
Maintenant supprimer les attributs onChange des checkbox qui font appels à des fonctions qui décoche.
Aussi dans la fonction Valid() supprimez la ligne "document.forms.frm.c1.checked=0;" qui va remettre à 0 la première checkbox.

Vous êtes prêts à valider !


Javascript / Jamais deux sans trois

Titre de l'épreuve : Jamais deux sans trois


Description :
Pour valider, entrez le login et le pass sous la forme "login-pass"

Explication :
De la même manière que précédemment, téléchargez et ouvrez avec Cavaj le fichier Applet3.class.
Vous trouvez encore une fois un code à convertir en ascii qui sera le login. Quant au mot de passe, c'est simplement le login à l'envers !


Javascript / Et de deux...

Titre de l'épreuve : Et de deux...


Description :
Trouvez le password!

Explication :
Pour cette deuxième épreuve de java, procédez comme auparavant : on télécharge l'Applet2.class et on l'ouvre avec Cavaj.
On voit que le mot de passe entré par l'utilisateur est comparé avec un mot de passe "chiffré" qui est préparé dans la fonction initPwd();
Le fonctionnement du code est le suivant :

  1. un tableau d'entier est déclaré.
  2. une boucle for itère le nombre de fois qu'il y a d'entier dans le tableau (4x donc)
  3. on met dans la variable c de type char, le cast char de l'entier du tableau, on obtient en faite l'equivalent en lettre du chiffre du tableau.
Pour trouver le mot de passe il suffit donc de faire la correspondance avec la table ascii des quatres entiers du tableau.

Javascript / Tout est relatif

Titre de l'épreuve : Tout est relatif


Description :
La source te donnera l'indice...

Explication :
A l'ouverture de la source on voit qu'un lien est présent dans l'épreuve :
<scr="www.newbiecontest.org/javascript/epreuve7/mickies.php">

On test ce lien dans un navigateur, mais on voit bien qu'il ne fonctionne pas. Or il faut faire la distinction entre lien relatif et lien absolu.
Ici ce n'est pas un lien absolu, bien que commençant par www, mais un nom de répertoire !


Javascript / Tiens une applet!

Titre de l'épreuve : Tiens une applet!


Description :
Trouvez le mot de passe!

Explication :
Dans cette épreuve est utilisé une applet. Une applet est un code compilé en java à destination du web.
On trouve dans le code source HTML le lien pour télécharger l'applet (http://newbiecontest.org/epreuves/javascript/Applet1.class) mais un fichier .class n'est pas un fichier source, c'est du bytecode Java.
Néanmoins pour obtenir la source, il est possible de décompiler cette applet avec un logiciel comme Cavaj.
En décompilant, la source est alors visible et il suffit de lire le code pour voir le mot de passe demandé.


Javascript / On joue à cache-cache ?

Titre de l'épreuve : On joue à cache-cache ?


Description :
On joue à cache-cache ?

Explication :
Comme précédemment, on enregistre la page, cherche le code javascript et on place un alert() juste avant la comparaison avec l'entrée utilisateur. Ici on obtient un chiffre : 156 et on voit dans le code que si le mot de passe est correct on nous redirige vers une page spéciale, qui sera donc
"http://www.newbiecontest.org/epreuves/javascript/156.php"



Javascript / Redirection

Titre de l'épreuve : Redirection


Description :
Un petit jeu de redirection

Explication :
Un tour dans la source vous présente un code javascript avec comparaison et le mot de passe en clair ! Mais ne criez pas victoire : ce code est un commentaire, il y a des "/*" et "*/" en haut et en bas du code, il n'est pas exécuté par la page.
Le vrai code est appelé par la ligne HTML suivante :
<script src="/epreuves/javascript/type.js" language="JavaScript" type="text/javascript"></script>
Un clic sur le lien et l'on voit le vrai mot de passe à utiliser.


Javascript / Calculons gaiement

Titre de l'épreuve : Calculons gaiement


Description :
Calculons gaiement!

Explication :
Encore une fois, enregistrez la page sur votre ordinateur, ouvrez là dans notepad++, cherchez le morceau de code javascript et insérez un alert() pour voir la bonne réponse.

Javascript / Un classique ...

Titre de l'épreuve : Un classique...


Description :
Un classique...

Explication :
Pour cette épreuve, il est nécessaire d'enregistrer la page de l'épreuve sur votre ordinateur. Un tour dans la source vous montrera encore qu'une chaîne est comparé à ce qui est entré par l'utilisation.
Rajoutez cette ligne de code avant la comparaison des chaînes (la ligne qui commence par "if") pour afficher dans une boite de dialogue la réponse : "alert(rst);"
Vous voyez que c'est du binaire : le code prend la longueur de la chaîne "abcde....XYZ" qui vaut 52 et la convertie en binaire avec l'instruction suivante : nb.toString(2); où 2 correspond à la base (binaire = base 2, décimale = base 10, hexadécimale = base 16).


Javascript / Je décode, tu décodes...

Titre de l'épreuve : Je décode, tu décodes...


Description :
Je décode, tu décodes, il décode ...

Explication :
Un tour dans la source nous montre que le formulaire de validation test le mot entré dans une fonction check();
Cette fonction compare le mot entré avec la chaine suivante : "%72%69%6D%62%61%75%64".
C'est donc une chaîne en ASCII mais codé en hexadécimale. Avec la table ascii disponible sur wikipedia il est donc possible de faire la correspondance entre les nombres hexadécimaux et leurs lettres correspondantes.


Javascript / Dans la page ?

Titre de l'épreuve : Dans la page ?


Description :
Le javascript n'est pas toujours visible dans une page...


Explication :
Il suffit de regarder la source html encore une fois. Le mot de passe était dans un commentaire javascript, donc non visible à l'écran.


Javascript / Et vous trouvez ça drôle ?

Titre de l'épreuve : Et vous trouvez ça drôle ?


Description :
On poursuit l'échauffement!

Explication :
En allant sur la page indiquée, une boite de dialogue vous demande le mot de passe, annulez et faites un tour dans la source html (CTRL + U) et vous voyez le code javascript avec le bon mot de passe.


Javascript / Ca coule de source

Titre de l'épreuve : Ca coule de source


Description :
Bienvenu(e) sur la toute première épreuve de Javascript.
Celle-ci est très facile : vous devez retrouver le mot de passe ci-dessous et l'entrer dans le champ de validation.

Explication :
On voit que c'est un champ de type password. Plusieurs méthode permettent de découvrir ce mot de passe, la plus rapide est la suivante : avec chrome ou firefox il est possible de modifier le code source directement avec un clic droit "Inspecter cet élément" sur l'objet à modifier. Ici on voit la solution dans l'attribut "value" du <input>


jeudi 9 février 2012

Cryptographie / SHIFT ou ALT ?


Titre de l'épreuve : SHIFT ou ALT ?

Description :
Indice : SHIFT serait pas pire avec ALT.

Epreuve :
o3-j95-e3-0qww3-3w5-0q4j3h8e3

Type de cryptographie : azerty -> qwerty et substitution visuelle

Explication :
Le contenu de l'épreuve est : o3-j95-e3-0qww3-3w5-0q4j3h8e3.
Il est possible de résoudre cette épreuve en faisant un "pendu" : on remarque tout de suite que le début de la phrase correspond à : "le mot de passe est", en connaissant la correspondance des lettres on a certaines lettres du mot de passe.
Il reste maintenant à trouver les dernières lettres, en regardant son clavier on peut trouver la méthode de chiffrement :
le o devient un l --> le l est situé sous la lettre o sur le clavier qwerty.

Par cette méthode on découvre les lettres restantes et on obtient le mot de passe.

Cryptographie / 1+3+3=7

Titre de l'épreuvre : 1+3+3=7


Description :
...


Epreuve :
13m07d3p45533572341173


Type de cryptographie : Leet Speak

Explication :
Le message de l'épreuve à été transformé en "leet speak" aussi appelé le "1337 5|*34|<", sorte de langage sms rarement utilisé sur internet.


Cryptographie / Problème d'encodage...

Titre de l'épreuve : Problème d'encodage...


Description :
Indice : petit problème d'encodage...

Epreuve :
6C652070617373776F726420706F7572207661
6C696465722065737420617A6572747930326B6A


Type de cryptographie : hexadécimale

Explication : 
On voit que le contenu de l'épreuve est écrit en hexadécimale (on compte en base 16, de 0 à F). Il s'agit donc d'utiliser un convertisseur hexadécimale -> ascii disponible à cette adresse : http://www.dolcevie.com/js/converter.html