본문 바로가기

Webhacking/Webhacking.kr

[Webhacking.kr] old-12번 문제 풀이

728x90
반응형

대놓고 javascript challenge라고 한다. 
javascript 문제가 틀림없으니 개발자 도구를 열어보자

와 욕나올 뻔했다 ㅎㅎ
열심히 난독화 해둔 이 javascript는 대체 무슨 내용일까...
우선 보기가 너무 힘드니, javascript 내용을 복사하여 beautify 해보았다.

총 22줄의 코드가 나왔다. beautify를 하면 보기 편할것이라는 나의 생각은 틀렸다...
일단 해당 코드를 분석해보기 위해, 개발자도구 console에 입력하여 실행시켜 보았다.

결과는 undefined... undefined란 정의되지 않았다...
이 결과를 통해 지금 실행한 구문이 무언가 함수를 실행한다는 것을 알 수 있었다.

그래서 코드를 찬찬히 보던 와중, 맨 마지막에 ('_'); 요부분이 눈에 띄었다.
대충 보아하니... 함수에 인자를 넘겨준 뒤 실행시키는 구문이구나 싶어,
이부분을 제거하고 다시한번 console에 javascript코드를 입력하여 실행해보았다

아 역시 함수 실행을 위한 인자값이 맞았다. 
인자값을 전달해주는 코드를 빼니, 함수에 대한 실행이 아닌 어떤 함수인지를 알 수 있었다.
(심지어 console에서 난독화를 다 푼 상태로 말이다! 개발자도구 최고!)

내용을 확인해보니, 큰 틀은 함수였고, 내용은 아래와 같았다.

  • ck : uri에서 = 뒤의 값 (파라미터에 전달한 값)
  • enco : 242자의 문자열
  • if문 문제를 풀기위한 조건

일단 if문을 분석하기 전에, 변수 선언과 enco_ 함수에 대한 선언을 먼저 진행했다.

개발자도구에서 요렇게 선언을 마친 뒤, if문에서 ck와 비교하는 값이 무엇인지 알기위해, console에 입력해보았다.

if문은 결국 ck가 =youaregod~~~~~~~! 이면 youaregod~~~~~~~!.php로 이동시켜주는 조건문임을 알 수 있었다.
여기서 풀이가 두가지로 나뉜다.

  1. 그냥 youaregod~~~~~~~!.php에 직접 접근하여 문제를 해결한다
  2. 아무 파라미터에 youaregod~~~~~~~! 이라는 데이터를 넣고 request를 보내 if문을 충족시킨다.

첫번째 방법은 이렇게 그냥 내가 직접 youaregod~~~~~~~!.php로 이동하는 것이다.

두번째 방법은 이렇게 임의의 파라미터에 youaregod~~~~~~~! 값을 넣어 요청을 보내는 것이다.

두가지 방법 모두 결국엔 이렇게 문제를 풀 수 있다!

크게 어렵지않은 문제였다. javascript를 개발자도구에서 잘 다루지 못한다면 풀기 어려울 것으로 보인다.

728x90
반응형