Niveau 8

Natas 8

Level Goal

Username: natas8
Password: DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
URL: http://natas8.natas.labs.overthewire.org

Si l'on se connecte à la page du challenge (curl http://natas8.natas.labs.overthewire.org -u natas8:DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe) on a de nouveau un formulaire :

<form method=post>
Input secret: <input name=secret><br>
<input type=submit name=submit>
</form>

<div id="viewsource"><a href="index-source.html">View sourcecode</a>

Et le code source suivant associé :

<?

$encodedSecret = "3d3d516343746d4d6d6c315669563362";

function encodeSecret($secret) {
    return bin2hex(strrev(base64_encode($secret)));
}

if(array_key_exists("submit", $_POST)) {
    if(encodeSecret($_POST['secret']) == $encodedSecret) {
    print "Access granted. The password for natas9 is <censored>";
    } else {
    print "Wrong secret";
    }
}
?>

On peut noter que lorsqu'on envoie un mot de passe il est :

Pour trouver le secret affiché dans le code source il faut donc appliquer les étapes précédentes dans un order inversé pour trouver le secret d'origine.

Dans un terminal on peut faire :

$ echo "3d3d516343746d4d6d6c315669563362"  | xxd -r -p | rev | base64 --decode
oubWYf2kBq

L'enchainement de commande peut être décomposé comme suit :

Si on envoie ce mot de passe au serveur :

curl -d 'secret=oubWYf2kBq&submit=Send' -X POST  http://natas8.natas.labs.overthewire.org -u natas8:DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe 

On obtient :

Access granted. The password for natas9 is W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl