Web/Web Hacking (Wargame)

[hackthissite/Javascript] Mission 1 ~ Mission 7

✏️ Mission 1 - Idiot Test


일단 password 입력 부분과 관련한 Javascript 코드를 찾아봐야 할 것 같다.

password 버튼에 대한 코드 바로 위에 관련된 스크립트가 포함되어 있다.

check 함수의 인자에 cookies 라는 문자열을 전달하면 해결될 것 같다.

 

🔓 Exploit



✏️ Mission 2 - Disable Javascript


webhacking.kr에서 비슷한 문제를 풀었었다.

Chrome의 설정을 통해 Javascript를 비활성화시킨다.

🔓 Exploit



✏️ Mission 3 - Math Time


 

해당 코드가 소스코드에 포함되어 있지 않으므로 console에서 실행시켜 함수를 정의해준다.

 

🔓 Exploit



✏️ Mission 4 - var


이 화면은 그대로다.

check 함수의 인자로 "+RawrRawr+" 변수의 값과 동일한 문자열을 전달할 경우 해결되는 것 같다.

🔓 Exploit


console 창을 통해 check 함수에 전달할 문자열에 대한 값을 확인한다. 

console.log 함수를 통해 필요한 변수의 값을 확인할 수 있다.


✏️ Mission 5 - Escape!


moo 변수의 값이 정확히 어떤 문자열을 가리키는 지 확인하면 해결할 수 있을 것이다.

 

[Javascript] unescape 함수, escape 함수
- unescape: 16진수로 변환된 문자열을 원상태로 복구한다.
- escape: 알파벳과 숫자 및 * , @, - , _ , + , . , / 를 제외한 문자를 모두 16진수 문자로 변환한다.

 

🔓 Exploit



✏️ Mission 6 - go go away .js


script를 확인해보면 두 개의 script 가 있는 것을 확인할 수 있다.

하나는 checkpass.js 로 따로 저장되어 있고, 하나는 HTML 코드의 script 태그 내에 모두 정의되어 있다.

 

그 코드를 확인해보면, checkpass.js가 유의미한 코드임을 알 수 있다.

🔓 Exploit



✏️ Mission 7 - JS Obfuscation. FTW!


JS 난독화를 이용한 문제인 듯 하다.

 

이 부분의 코드만 따로 떼어 확인해보면 다음과 같다.

var _0x4e9d=["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x77\x72\x69\x74\x65"];
document[_0x4e9d[0x1]](String[_0x4e9d[0x0]](0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x27,0x6a,0x61,0x76,0x61,0x73,0x63,0x72,0x69,0x70,0x74,0x3a,0x69,0x66,0x20,0x28,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x28,0x22,0x70,0x61,0x73,0x73,0x22,0x29,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x3d,0x22,0x6a,0x30,0x30,0x77,0x31,0x6e,0x22,0x29,0x7b,0x61,0x6c,0x65,0x72,0x74,0x28,0x22,0x59,0x6f,0x75,0x20,0x57,0x49,0x4e,0x21,0x22,0x29,0x3b,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x2b,0x3d,0x20,0x22,0x3f,0x6c,0x76,0x6c,0x5f,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3d,0x22,0x2b,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x28,0x22,0x70,0x61,0x73,0x73,0x22,0x29,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7d,0x65,0x6c,0x73,0x65,0x20,0x7b,0x61,0x6c,0x65,0x72,0x74,0x28,0x22,0x57,0x52,0x4f,0x4e,0x47,0x21,0x20,0x54,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x21,0x22,0x29,0x7d,0x27,0x3e,0x43,0x68,0x65,0x63,0x6b,0x20,0x50,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e));


onclick="javascript:if (document.getElementById("pass").value=="j00w1n"){alert("You WIN!");window.location += "?lvl_password="+document.getElementById("pass").value}else {alert("WRONG! Try again!")}"

 

일단 script의 난독화 된 부분을 해독하는 것이 우선이다.

 

https://deobfuscate.io/

이 사이트를 이용해 JS 난독화를 해제할 수 있다.

더보기

document.write(String.fromCharCode(60, 98, 117, 116, 116, 111, 110, 32, 111, 110, 99, 108, 105, 99, 107, 61, 39, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 58, 105, 102, 32, 40, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 34, 112, 97, 115, 115, 34, 41, 46, 118, 97, 108, 117, 101, 61, 61, 34, 106, 48, 48, 119, 49, 110, 34, 41, 123, 97, 108, 101, 114, 116, 40, 34, 89, 111, 117, 32, 87, 73, 78, 33, 34, 41, 59, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, 111, 110, 32, 43, 61, 32, 34, 63, 108, 118, 108, 95, 112, 97, 115, 115, 119, 111, 114, 100, 61, 34, 43, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 34, 112, 97, 115, 115, 34, 41, 46, 118, 97, 108, 117, 101, 125, 101, 108, 115, 101, 32, 123, 97, 108, 101, 114, 116, 40, 34, 87, 82, 79, 78, 71, 33, 32, 84, 114, 121, 32, 97, 103, 97, 105, 110, 33, 34, 41, 125, 39, 62, 67, 104, 101, 99, 107, 32, 80, 97, 115, 115, 119, 111, 114, 100, 60, 47, 98, 117, 116, 116, 111, 110, 62));

 

위의 코드와 같다. 

이제 해야할 건 "pass"에 대한 값을 "j00w1n"으로 바꾸는 것이다.

 

따로 변조할 것도 없이, password 입력칸에 입력한 값이 pass의 값으로 저장된다.

🔓 Exploit


 

 

 

 

 

SMALL

'Web > Web Hacking (Wargame)' 카테고리의 다른 글

[Dreamhack] out of money  (0) 2023.02.04
[webhacking.kr] old-32  (0) 2023.02.03
[webhacking.kr] old-17  (0) 2023.01.29
[webhacking.kr] old-16  (0) 2023.01.29
[webhacking.kr] old-15  (0) 2023.01.29