ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Root-me> Javascript - Obfuscation 3
    Wargame/Root-me = Web - Client 2021. 12. 20. 22:53

    비밀번호를 입력하라고 한다.

     

    페이지 소스 코드를 보면

    function dechiffre(pass_enc){
        var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
        var tab  = pass_enc.split(',');
        var tab2 = pass.split(',');
        var i,j,k,l=0,m,n,o,p = "";
        i = 0;
        j = tab.length;
        k = j + (l) + (n=0);
        n = tab2.length;
        
        for(i = (o=0); i < (k = j = n); i++ ){
            o = tab[i-l];
            p += String.fromCharCode((o = tab2[i]));
            if(i == 5)
                break;}
        for(i = (o=0); i < (k = j = n); i++ ){
            o = tab[i-l]; 
            if(i > 5 && i < k-1)
                p += String.fromCharCode((o = tab2[i]));
    }
    
    p += String.fromCharCode(tab2[17]);
    pass = p;return pass;
    }
    String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));
        
    h = window.prompt('Entrez le mot de passe / Enter password');
    alert( dechiffre(h) );

    코드를 하나 하나 따라가면서 풀어도 답이 나오지 않았다.

     

    String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));

    위 부분은 정상적인 코드가 아닌 것 같아 문자열을 유니코드 텍스트 디코딩해보니

    55,56,54,79,115,69,114,116,107,49,50가 나왔다.

    이를 이용해 String.fromCharCode(55,56,54,79,115,69,114,116,107,49,50) 해보니

    "786OsErtk12" 비밀번호같은 값을 획득할 수 있었다.

     

    이 값을 문제 페이지에 입력하니 문제를 해결할 수 있었다.

Designed by Tistory.