[그림 01] level12 시작


단도직입적으로 javascript 문제라는 것을 말해줍니다.


[그림 02] javascript 난독화


자바 스크립트에서 [그림 02]와 같이 난독화가 되어 있는 모습을 볼 수 있습니다.

그렇다면 우리는 이를 다시 문자로 변환하여 어떤 script문인지 파악을 해야 할 필요가 있습니다.

Python으로 코드를 작성해보도록 합시다.

(Python 버전 2.7.12)

Worktime = """118,97,114,32,101,110,99,111,61,39,39,59,13,10,118,97,114,32,101,110,99,111,50,61,49,50,54,59,13,10,118,97,114,32,101,110,99,111,51,61,51,51,59,13,10,118,97,114,32,99,107,61,100,111,99,117,109,101,110,116,46,85,82,76,46,115,117,98,115,116,114,40,100,111,99,117,109,101,110,116,46,85,82,76,46,105,110,100,101,120,79,102,40,39,61,39,41,41,59,13,10,32,13,10,32,13,10,102,111,114,40,105,61,49,59,105,60,49,50,50,59,105,43,43,41,13,10,123,13,10,101,110,99,111,61,101,110,99,111,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,105,44,48,41,59,13,10,125,13,10,32,13,10,102,117,110,99,116,105,111,110,32,101,110,99,111,95,40,120,41,13,10,123,13,10,114,101,116,117,114,110,32,101,110,99,111,46,99,104,97,114,67,111,100,101,65,116,40,120,41,59,13,10,125,13,10,32,13,10,105,102,40,99,107,61,61,34,61,34,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,52,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,51,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,49,57,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,54,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,48,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,48,52,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,50,45,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,49,57,56,41,41,43,34,126,126,126,126,126,126,34,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,50,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,51,41,41,13,10,123,13,10,97,108,101,114,116,40,34,80,97,115,115,119,111,114,100,32,105,115,32,34,43,99,107,46,114,101,112,108,97,99,101,40,34,61,34,44,34,34,41,41,59,13,10,125,13,10"""
WorkList = list()
Worktime = Worktime.split(',')

for i in range(len(Worktime)):
	WorkList += chr(int(Worktime[i]))

print "".join(WorkList)

실행 결과는 [그림 03]과 같습니다.


[그림 03] 파이썬 소스 결과


위의 소스를 차근차근 해석해봅시다.

enco는 초기화 변수

enco2는 126이 저장

enco3는 33을 저장

ck는 document.URL.substr(document.URL.indexOf('='));을 저장함


첫번째 for문 : CharCode를 (1,0)~(121,0)Rkwl enco에 저장합니다.

enco_함수 : enco에 저장된 CharCode를 반환해주는 소스입니다.


if문에 enco와 enco_함수를 통해 만들어진 문자열이 ck와 같다면 패스워드를 뱉어내는 구조입니다.


if문 안의 String을 개발자 도구에서 붙여넣게 되면 [그림 04]와 같은 문자를 뱉어내게 됩니다.


[그림 04] if문 결과


ck에는 현재 아무런 값도 붙어 있지 않았기 때문에, 맨 뒤에 =youaregod~~~~~~~!를 넣게 되면 답을 얻을 수 있게 된다.


[그림 05] 해답 구하기


'WARGAMES > webhacking.kr - old' 카테고리의 다른 글

Webhacking.kr_No.17(100) - old  (0) 2016.06.28
Webhacking.kr_No.16(100) - old  (0) 2016.06.28
Webhacking.kr_No.15(50) - old  (0) 2016.06.28
Webhacking.kr_No.14(100) - old  (0) 2016.06.28
Webhacking.kr_No.10(250) - old  (0) 2016.06.28
Webhacking.kr_No.06(100) - old  (0) 2016.06.28
Webhacking.kr_No.05(300) - old  (0) 2016.06.26
Webhacking.kr_No.04(150) - old  (0) 2016.06.22

+ Recent posts