Wargame/webhacking.kr (old)

[Webhacking.kr] 16번 풀이

Grini 2019. 4. 19. 21:03


화면에 별만 나와있다.

소스 코드를 보자!



소스 코드를 보니 mv함수가 정의되어 있다.

mv함수는 event.keyCode인 것을 보니 특정 키를 누르면 실행되는 함수이다.

mv함수를 해석해보았다.


kk(x,y) 랜던 값의 색을 가진 *을 x, y값에 맞게 화면에 추가

mv함수의 매개변수인 cd가 100일 경우, 별 왼쪽으로 +50 이동

97일 경우, 별 왼쪽으로 -50 이동

119일 경우, 별 위쪽에서 -50 이동 (아래로 이동)

115일 경우, 별 위쪽에서 +50 이동 (위로 이동)

124이면, 특정 주소로 이동


우선 mv함수를 실행해보기 위해 keycode 정리표의 값대로 키를 눌러보았으나,

mv함수대로 별이 이동하지 않았다.


다른 방법이 무엇이 있을까 생각하다가 아스키 값을 이용해보기로 하였다.

아스키 코드표는 아래와 같다.


[출처] https://simple.wikipedia.org/wiki/ASCII


100 : d (→)

97 : a (←)

119 : w (↑)

115 : s (↓)

124 : | (파이프)


아래 사진과 같이 해당 키를 누르면 별이 움직이는 것을 확인할 수 있다.

만약, 별이 움직이지 않는다면 Internet Explorer를 이용하면 된다.

왜인지는 모르겠으나, Chrome에서는 별이 움직이지 않는다...;;



별이 움직이는 것을 확인하였으니,

어딘가로 이동하는 의심스러운 124번의 키 코드를 가진 |(shift + \)를 눌러보았더니

아래와 같이 password를 알려주는 페이지로 이동하였다.



알아낸 password를 Auth페이지에 인증하면 문제가 풀린다.

(Chrome에서 별이 움직이는 것은 확인할 수 없지만 소스 코드는 정상작동 하기 때문에

|를 누르면 password를 알려주는 페이지로 이동한다.)




키를 직접 눌리는 방법 말고도 이 문제를 풀 수 있다.

그것은 바로 아주 유용한 도구인 개발자 도구를 이용하는 방법이다.


아래와 같이 Console창에 mv함수를 정의해주고,

mv(124)를 실행시켜주면, 아까와 같은 password를 알려주는 페이지로 이동한다.