워게임/Root Me

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

SecurityMan 2022. 3. 20. 15:30

세번째 Obfuscation 문제이다.

 

Obfuscation 이란 난독화를 의미한다.

 

반응형

 

공격자가 자신의 악성코드가 들키기 않기위해,

 

또는 개발자가 자신의 프로그램을 분석하는것을 방지하기위해 주로 사용되는 기법이다.

 

Obfuscation 1번 문제 : https://hackingstudypad.tistory.com/26

Obfuscation 2번 문제 : https://hackingstudypad.tistory.com/30

 

 

세번째 Obfuscation 문제 역시 페이지에 접속하면 비밀번호를 요구한다.

 

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

 

뭔가 복잡한 자바스크립트 코드가 작성되어 있다.

 

가장먼저 dechiffre 라는 함수가 선언되어있고,

 

아래쪽에서 함수를 호출하고 있는 모습이 보인다.

 

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"));

 

내가 주목한 부분은 함수 선언이 끝나고 아래쪽에 호출하는 이부분이다.

 

String["fromCharCode"] 함수는 아스키코드로부터 문자열을 출력해주는 함수이다.

 

콘솔창에서 이런식으로 테스트 가능하다.

 

그럼이제 dechiffre 안에 있는 hex 값이 어떤 내용인지 알아보자

 

cyberchef(https://gchq.github.io/CyberChef/) 라는 사이트를 이용해서 hex 값을 쉽게 디코딩할 수 있다.

 

디코딩 해보니 55 56 54 79 115 같은 숫자들이 나오는데 

 

이것들은 아스키 코드인듯 하다.

 

 

이 표를 이용해서 하나씩 대입해서 풀거나,

 

 

개발자도구의 콘솔창에서 아까 이용했던 String["fromCharCode"] 함수를 이용해서

 

이렇게 풀어도 된다.

 

디코딩된 문자열이 비밀번호이다.

반응형