Search

[rootme] Javascript - Obfuscation 1

Tags
writeup
date
2022/01/07 12:50
Property
2022/01/07 12:50

1. 문제

1) 문제 확인
비밀번호를 입력하라고 한다.

2. 접근방법

페이지 소스코드를 살펴보자
Obfuscation 은 사전적의미로 난독화를 뜻한다. script 태그 안의 자바스크립트 코드를 보면 pass 변수에 이상한 값을 넣는다. 그다음 사용자의 입력으로 비밀번호를 입력받는다. 그다음, 입력 한 값이 pass 변수를 인자로한 unescape() 함수의 반환값과 동일한지 체크한다.
그럼 unescape() 함수의 반환값이 뭔지를 확인해보면 될것이다.

3. 풀이

저거를 입력하면 끝이다

4. 몰랐던 개념

escape() 함수
ASCII 코드를 지원하는 모든 컴퓨터들이 서로 통신 할 수 있도록 각종 문자를 인코딩 해주는 함수. unescape()로 디코딩을 한다.
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890 @*-_+./
Plain Text
복사
요 문자들을 제외하고 나머지 아스키 문자들을 %16진수 로 인코딩 시켜준다. 반대로 디코딩을 하려면 unescape() 함수를 사용하면 된다
인코딩을 해주는 함수는 escape() 말고 도 다른것들도 있다
1.
encodeURI() / decodeURI()
최소한의 문자만 인코딩합니다. ; / ? : @ & = + $ , - _ . ! ~ * ' ( ) # 이런 문자는 인코딩하지 않습니다.
Plain Text
복사
2.
encodeURIComponent() / decodeURIComponent()
알파벳과 숫자 Alphanumeric Characters 외의, 대부분의 문자를 모두 인코딩합니다. http:// ... 가 http%3A%2F%2F 로 됩니다.
Plain Text
복사
3.
escape() / unescape()
encodeURI() 와 encodeURIComponent() 의 중간 정도의 범위로 문자를 인코딩합니다.
Plain Text
복사