워게임/Root Me

[Root Me] Javascript - Native code - 웹해킹 / 자바스크립트

SecurityMan 2022. 3. 16. 19:25

Javascript - Native code 문제 15점짜리 문제이다.

 

문제 이름이 조금 바꼈는데 사실상 Obfuscation3 라고 봐도 무방할것 같다.

 

비슷한 유형의 난독화 문제이다.

 

문제페이지에 접속하면 또 이렇게 비밀번호를 요구한다.

 

역시나 f12를 눌러서 개발자도구로 웹 소스를 확인해본다.

 

확인해봤더니 중간에 <script> 태그 사이에 알수 없는 외계어들이 써있는걸 볼 수 있다.

 

그래도 Obfuscation 1, 2 문제는 사람이 읽을 수 있는 글자였는데... 적어도 알파벳이었는데

 

이 문제는 알파벳도 아닌 이상한 기호들로 도배되어있다.

 

이런 괴상하게 난독화된 코드가 있을때 아주 쉽게 풀 수 있는 방법이 있다.

 

 

개발자 도구를 보면 '콘솔'이라는 탭이 있다.

 

여기서 테스트용으로 javascript 코드를 실행시켜 결과를 확인해볼 수 도 있다.

 

문제의 난독화된 코드를 통채로 복사해와서 여기에 붙여넣고 실행을 시켜본다.

 

 

엔터를 눌러 실행시키면 맨 처음 봤던 비밀번호 입력창이 뜬다.

 

이 난독화된 코드는 비밀번호 입력창을 띄우게하는 역할을 하는것 같다.

 

코드를 다시한번 자세히 보자

 

반응형

 

난독화된 코드에서 ctrl + f 를 눌러 세미콜론(;)을 검색해 본다. 

 

세미콜론이 두개 들어가있는것을 볼 수가 있다. 

 

저 난독화된 코드 덩어리가 통채로 한덩어리가 아니라 세개가 합쳐져있다는 것이다.

 

 

세미콜론을 기준으로 잘라낸 부분부분만 복사해서 콘솔창에 붙여넣기 하면 이렇게 자동으로 디코딩이 된다.

 

맨 첫줄은 알수없는 7이라는 숫자가 나오고,

 

두번째 부분은 어떤 함수의 시작을 나타내는듯 하다.

 

콘솔창에 난독화된 코드를 통채로 실행시켰을때 비밀번호 입력창이 떴던건 

 

어떤 특정한 함수가 실행됐기 때문이다. 이 함수를 실행을 시키지 않고, 콘솔창에만 찍어보자.

 

콘솔창에서 난독화된 코드 맨 뒤에 있는 () 를 지워보자

 

그런뒤에 엔터를 치면 함수가 실행되지 않고, 영어로 해석되어서 출력된다.

 

중간에 보면

 

if(a='toto123lol'){alert('bravo');}

라는 부분이 보인다.

 

비밀번호는 toto123lol 이라는것을 확인할 수 있다.

반응형