-
<Root-me> Javascript - Obfuscation 3Wargame/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" 비밀번호같은 값을 획득할 수 있었다.
이 값을 문제 페이지에 입력하니 문제를 해결할 수 있었다.
'Wargame > Root-me = Web - Client' 카테고리의 다른 글
<Root-me> CSRF - 0 protection (0) 2021.12.24 <Root-me> CSP Bypass - Inline code (0) 2021.12.22 <Root-me> Javascript - Native code (0) 2021.12.19 <Root-me> Javascript - Obfuscation 2 (0) 2021.12.19 <Root-me> Javascript - Obfuscation 1 (0) 2021.12.19