Phone Lock [Web][CTF Hack-Dat-Kiwi][50pts]

Ce challenge fait partie de la catégorie web du CTF hack-dat-kiwi.

Voici la page affichée lorsque l’on selectionne le challenge :

screenshot

Il faut donc trouver le code à entrer pour débloquer le téléphone.

Je regarde le code source et remarque un script en Javascript :

<script>
result="";
tries=0;
locked=false;
salt="f0bc0d06f79595c0e0e1a0419ade8e3c";
valid="ab575fb21e68d5321b259fd48c52dc66";
//md5(salt+answer)

function buttonClick(e)
{
	if (locked) return false;
	var t=$("#result");
	t.val(t.val()+"X");
	result+=e.target.text;
	if (t.val().length>=4)
	{
	    if (md5(salt+result)==valid)
	    {
		alert("Flag is: "+md5(salt+result+result));
	     }
	     else
	     {
	        locked=true;
	        $("#resultHolder").effect("shake", 
               { times:tries }, tries*100,function(){
		t.val("");
		result="";
		tries++;
		locked=false;
	        });
	   }
        }
}
$(function(){
	document.onclick = function(evt) {
    if (window.getSelection)
        window.getSelection().removeAllRanges();
    else if (document.selection)
        document.selection.empty();
	}

	$("#pad .button").bind("click",buttonClick);
});

</script>
script en JS

Je décide donc de créer un script en python qui brute force
entre le code 0000 et 9999 puisqu’il ne contient que 4 chiffres :

#!/usr/bin/env python2
import md5;
salt = "f0bc0d06f79595c0e0e1a0419ade8e3c"
valid = "ab575fb21e68d5321b259fd48c52dc66"
for i in range(9999):
    md = md5.new(salt+str(i)).hexdigest()
    if(md==valid):
            print("code: "+str(i))
get_code.py

 

Je lance ce script et j’obtiens « ok : 8423  »

Il ne reste plus qu’à le taper sur le téléphone de la page web et on recupère le flag.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.