root-me-client

root-me web-client 9번 문제 풀이(Obfuscation 3)

webhacking지구 2021. 9. 27. 00:45

일단 확인 누르고 그냥 관리자 도구로 가서 script에 들어가주었더니

    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) );

이렇게 되있었다.

일단 보자 이것을 보면 이문제는 인코딩문제로 보이는것을 알수있습니다. 

일단 이문제는 콘솔로 풀수있기때문에 일단은 밑에 보이는 것처럼 

콘솔은 참 편합니다 이렇게 바꾸어주고 이 메서드는 utf-16을 문자열로 바꿔주는거죠.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

 

String.fromCharCode() - JavaScript | MDN

String.fromCharCode() 메서드는 UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환합니다.

developer.mozilla.org

이사이트에가면 쉽게 알수있습니다.

그리고 이렇게 해줍니다 

이렇게 해주면 답이나옵니다.

답:786OsErtk12