Outils d'utilisateurs

Outils du Site


forbiddenbits_2013_naziwar

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

forbiddenbits_2013_naziwar [2017/04/09 15:33] (Version actuelle)
Ligne 1: Ligne 1:
 +===== Nazi War (200) =====
 +<code>Let the nazi war begin.
 +My fuhrer will launch it: nc 88.190.221.116 1337</code>
  
 +==== Overview ====
 +On se retrouve avec un service qui nous permet de nous connecter à une interface pour lire des fichiers.
 +
 +Pour se connecter, on nous demande d'entrer un nom d'utilisateur pour générer un mot de passe associé.
 +
 +Une fois ce mot de passe récupéré, on doit se connecter.
 +Une fois connecté, on à le droit de lister les fichiers et ainsi, de les lire.
 +Il existe un fichier flag, on essaye donc de le lire et on se retrouve avec un message:
 +
 +<code>> read flag
 +Only my fuhrer can read the top secret flag.</code>
 +
 +On essaye donc de générer le mot de passe du Fuhrer (qui n'est rien d'autre que Hitler), mais un message d'erreur s'affiche:
 +
 +<code>>> Hello, comrade. I can't remember you. Define yourself to get a pass.
 +> hitler
 +Sorry you can't be hitler. Shutdown now!</code>
 +
 +Alors, nous devons nous pencher vers "comment est généré ce mot de passe".
 +
 +==== Solution ====
 +Nous nous sommes tout de suite tourné vers la fonction de chiffrement DES. Le salt est donné (fb).
 +
 +<code>crypt('xartrick', 'fb')      = 'fbSSJ/i65tQvI'
 +crypt('xartrick-tapz', 'fb') = 'fbSSJ/i65tQvI'
 +crypt('xartric', 'fb')       = 'fbRukOw/kgxsw' (incorrect => 'fb2u7t8VibXlI')</code>
 +
 +Les deux premiers fonctionnent, mais pas le dernier.
 +On peut donc légitimement pensé qu'un padding est effectué, pour cela, on va bruteforce tout ça.
 +
 +Le nom hitler ne fait que 6 caractères, pas besoin d'aller plus loins.
 +
 +<code php>/**
 + * fb2u7t8VibXlI => xartric? (7 chars)
 + * fbP8tYJcLAClg => xartrih? (6 chars with previous padding)
 + */
 +
 +$need = 'fb2u7t8VibXlI';
 +$name = 'xartric';
 +
 +for ($i = 0; $i < 128; $i++) {
 + $_name = $name . chr($i);
 + $crypt = crypt($_name, 'fb');
 +
 + if ($crypt == $need) {
 + echo($_name);
 + }
 +}
 +
 +/**
 + * fb2u7t8VibXlI => xartrich (padding 'h')  (7 chars)
 + * fbP8tYJcLAClg => xartrih4 (padding 'h4') (6 chars)
 + */</code>
 +
 +On se retrouve avec un padding de 'h4'.
 +Maintenant, on peut récupérer le mot de passe de hitler(h4)
 +
 +<code>crypt('hitlerh4', 'fb') = 'fboWsVzkSumM.'</code>
 +
 +On se connecte et on admire:
 +
 +<code>>> In order to get access to our system authentication is required!
 +  + Username:hitler
 +  + Password:fboWsVzkSumM.
 +> read flag
 +99fa57bd69cdcfdd2e2fb6419e2994ca</code>
 +
 +==== Flag ====
 +<code>99fa57bd69cdcfdd2e2fb6419e2994ca</code>
forbiddenbits_2013_naziwar.txt · Dernière modification: 2017/04/09 15:33 (modification externe)