Javascript - Native code 문제 15점짜리 문제이다.
문제 이름이 조금 바꼈는데 사실상 Obfuscation3 라고 봐도 무방할것 같다.
비슷한 유형의 난독화 문제이다.
문제페이지에 접속하면 또 이렇게 비밀번호를 요구한다.
역시나 f12를 눌러서 개발자도구로 웹 소스를 확인해본다.
확인해봤더니 중간에 <script> 태그 사이에 알수 없는 외계어들이 써있는걸 볼 수 있다.
그래도 Obfuscation 1, 2 문제는 사람이 읽을 수 있는 글자였는데... 적어도 알파벳이었는데
이 문제는 알파벳도 아닌 이상한 기호들로 도배되어있다.
이런 괴상하게 난독화된 코드가 있을때 아주 쉽게 풀 수 있는 방법이 있다.
개발자 도구를 보면 '콘솔'이라는 탭이 있다.
여기서 테스트용으로 javascript 코드를 실행시켜 결과를 확인해볼 수 도 있다.
문제의 난독화된 코드를 통채로 복사해와서 여기에 붙여넣고 실행을 시켜본다.
엔터를 눌러 실행시키면 맨 처음 봤던 비밀번호 입력창이 뜬다.
이 난독화된 코드는 비밀번호 입력창을 띄우게하는 역할을 하는것 같다.
코드를 다시한번 자세히 보자
난독화된 코드에서 ctrl + f 를 눌러 세미콜론(;)을 검색해 본다.
세미콜론이 두개 들어가있는것을 볼 수가 있다.
저 난독화된 코드 덩어리가 통채로 한덩어리가 아니라 세개가 합쳐져있다는 것이다.
세미콜론을 기준으로 잘라낸 부분부분만 복사해서 콘솔창에 붙여넣기 하면 이렇게 자동으로 디코딩이 된다.
맨 첫줄은 알수없는 7이라는 숫자가 나오고,
두번째 부분은 어떤 함수의 시작을 나타내는듯 하다.
콘솔창에 난독화된 코드를 통채로 실행시켰을때 비밀번호 입력창이 떴던건
어떤 특정한 함수가 실행됐기 때문이다. 이 함수를 실행을 시키지 않고, 콘솔창에만 찍어보자.
콘솔창에서 난독화된 코드 맨 뒤에 있는 () 를 지워보자
그런뒤에 엔터를 치면 함수가 실행되지 않고, 영어로 해석되어서 출력된다.
중간에 보면
if(a='toto123lol'){alert('bravo');}
라는 부분이 보인다.
비밀번호는 toto123lol 이라는것을 확인할 수 있다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] Javascript - Obfuscation 3 - 웹해킹 / 자바스크립트 (52) | 2022.03.20 |
---|---|
[Root Me] Javascript - Webpack - 웹해킹 / 자바스크립트 (28) | 2022.03.18 |
[Root Me] Javascript - Obfuscation 2 - 웹해킹 / 자바스크립트 (44) | 2022.03.13 |
[Root Me] Javascript - Obfuscation 1 - 웹해킹 / 자바스크립트 (23) | 2022.03.10 |
[Root Me] Javascript - Authentication 2 - 웹해킹 / 자바스크립트 (18) | 2022.03.08 |