<html>
<head>
<title>Obfuscation JS</title>
<!--
Obfuscation
.Niveau : Facile
.By Hel0ck
.The mission :
Retrouver le password contenu dans la var pass.
You need my help ? IRC : irc.root-me.org #root-me
-->
<script type="text/javascript">
var pass = unescape("unescape%28%22String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529%22%29");
</script>
</head>
</html>
주석으로 뭐 이상한 말이 적혀있고,,, pass라는 이름의 변수에 이전 단계에서 보았던 unescape 뭐시기뭐시기가 써있다. unescape 뒤에 %28%22이 있고, 그 뒤에 String.fromCharCode가 있다. %28과 %22는 각각 아스키코드로 (과 " 이다. 그럼 다시 unescape() 함수 내에 있는 문자열을 확인해보면
unescape 함수 내에 또 unescape 함수가 있고 그 인자로는 String.fromCharCode 라는 함수가 들어갔다.
String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529 이다. 저 뒤에 주어진 %2528~ 이게 뭔지 모르겠어서 unescape 함수에 넣어보았다. 그랬더니 아래와 같이 나왔다.
위와 같이 값이 변형된걸 보니 16진수 아스키코드였나보다!
그럼 이렇게 나온 숫자 조합을 String.fromCharCode 함수에 인자로 넣어주면?