보안/Root Me

    Root Me: Javascript - Obfuscation 2

    Going down 3 floors..... (이번 문제의 힌트다. 3계단을 내려가라고 한다) 문제를 보면 아무것도 나오지 않는다. 당연히 페이지 원본 보기를 할 것이다. pass값이 있다. pass=unescape("unescape%28%22String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529%22%29") pass = unescape("어쩌구")이기 때문에 우리도 "어쩌구"를 unescape해본다. "어쩌구"를 unescape해보면 또 unescape("어쩌구2")의 형식이다. >>> 어쩌구 = unescape("어쩌구2") 마찬가지로 "어쩌구2"도 unesca..

    Root Me: Javascript - Obfuscation 1

    (Obfuscation : 난독화) 문제를 들어가자마자 password를 입력하라고 한다. 역시나 아무값을 입력해보고 잘못됐다는 알림을 받는다. 페이지 원본보기를 통해 JS코드를 보면 pass값이 있다. 그리고 사용자의 입력값(h)가 pass를 unescape한 값과 같을 때 password가 맞다는 알림을 받게 되어있다. escape함수는 영어 대소문자, 특수기호(*@-_+./), 숫자를 제외한 문자를 16진수의 형태로 바꿔준다. 1바이트 문자는 %XX의 형식, 2바이트 문자는 %uXXXX의 형식을 갖는다. unescape함수는 escape된 문자열을 원래대로 돌려준다. pass = %63%70%61%73%62%69%65%6e%64%75%72%70%61%73%73%77%6f%72%64이므로 %XX의 형..

    Root Me: Javascript - Authentication 2

    문제를 보면 login버튼 하나만 보인다. 눌러보면 username과 password를 입력하라고 나온다. 아무거나 입력하고 확인을 누르면 당연히 틀렸다고 나온다. 마찬가지로 페이지 원본보기를 통해 login.js에 들어가보면 username == TheUsername && password == ThePassword 이 조건이 만족될 때 로그인이 된다. (이 password로 챌린지를 validate할 수 있다) TheUserName이라는 변수는 TheSplit리스트의 첫번째 요소이고, ThePassword이라는 변수는 TheSplit리스트의 두번째 요소이다. TheSplit이라는 리스트는 TheLists의 요소들을 :를 통해 나눈것들을 요소로 갖는다 TheLists의 요소는 GOD:HIDDEN이고 이것..

    Root Me: Javascript - Source

    문제에 들어가자 마자 password를 입력하라고 한다. 아무 문자/숫자를 넣어보면 당연히 틀린 password라고 나온다. 개발자 도구를 통해 해당 페이지의 script를 보면 password가 123456azerty일 때 이 패스워드로 챌린지를 validate할 수 있다고 알리게 되어있다. 따라서 해당 password가 답이된다.