워게임/HackTheBox

[HackTheBox] Canvas - MISC / Javascript Deofuscator

SecurityMan 2022. 12. 20. 11:00

 

자바스크립트 난독화와 관련된 MISC 카테고리의 문제

 

MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.

 

반응형

 

 

문제파일로 Canvas.zip 파일이 주어진다.

 

압축을 풀면 위에 보이는 네 개의 파일/폴더가 나온다.

 

 

index.html 파일을 열어보면 이렇게 로그인 창이 하나 뜬다.

 

정황상 비밀번호를 알아내거나 로그인을 우회해야 할 듯 하다.

 

 

F12를 눌러 개발자도구에서 HTML코드를 보니

 

로그인 버튼을 누르면 validate() 함수가 실행된다는 것을 알았다.

 

위쪽에 script 태그로 js/login.js 에서 스크립트가 실행되도록 해놓았으니

 

login.js 파일을 살펴본다.

 

 

login.js 파일을 봤더니 난독화가 되어있었다.

 

길어서 캡쳐가 짤렸는데,

 

자바스크립트 길이가 총 147줄이다.

 

이걸 일일이 비교해가면서 찾는건 불가능에 가깝다..

 

 

아까 봤던 validate() 함수를 컨트롤 + f 로 찾아보니

 

거의 마지막쯤에 있었다.

 

보다보니 맨 마지막 줄이 눈에 띄었는데

 

res 라는 변수에 어떤 값을 담고 있는게 보였다.

 

 

res 바로 뒤에있는 String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'] 에서

 

16진수 부분을 CyberChef(https://gchq.github.io/CyberChef)에서 문자로 바꿔보니 fromCharCode 가 나왔다.

 

fromCharCode 는 유니코드 값을 문자열로 바꿔주는 역할을 한다.

 

어떤 값을 문자열로 바꿔서 res 변수에 담고 있는것이다.

 

 

res 에 어떤 값이 들어갔는지 확인하는 방법은 아주 간단하다.

 

개발자도구의 콘솔 탭에서

 

res 라고 입력하고 엔터를 치면 된다.

 

그럼 res 변수에 들어있던 플래그가 출력되는것을 볼 수 있다.

반응형