✏️ 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의 난독화 된 부분을 해독하는 것이 우선이다.
이 사이트를 이용해 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
'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 |