Phone Lock (Web)
A friend of mine forgot her phone password. I told her you're the hacker! Go get 'em tiger.
I forgot my phone password, can you help me unlock it? (Don't judge, happens to us all)リンクをクリックすると、携帯電話の数字盤が表示されます。数字を4文字押すと暗証番号とチェックされ、間違っていると振動します。
さて、どのように実装されているか確認するために、ブラウザからソースを表示してみます。
salt="0c4aa63feb00b85304c2556257fe2963";resultには押した数字が入ります。saltとresultを連結した文字列のMD5ハッシュ値とvalidを比較して一致していれば、flagが表示されるようです。
valid="5a5d9ffab9ea139a8b05d3d98a557bcf";
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;
});
}
}
}
したがって、次のように4桁の数字をブルートフォースアタックでFlagを取得することができます。
for(a=0;a<=9;a++)このjavascriptを実行すると、次のようにフラグが表示されます。
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
for(d=0;d<=9;d++)
{
if (md5(salt+a+b+c+d)==valid)
{
alert("Flag is: "+md5(salt+a+b+c+d+a+b+c+d));
break;
}
}
}
}
}
Flag is: a9786c1342e430ce0b00ae4e0ad582a4









