Wargame/Root-me = Web - Client
<Root-me> Javascript - Obfuscation 3
지우친구 웅이
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" 비밀번호같은 값을 획득할 수 있었다.
이 값을 문제 페이지에 입력하니 문제를 해결할 수 있었다.