webhacking.kr 17번 풀이

2018. 8. 8. 17:27wargame/webhacking.kr

webhacking.kr 17번 풀이


 



[HINT]


1. javascript




JS는 client side script이므로 클라이언트 측에서 소스를 열람할 수 있고 변조할 수 있다.


소스에선 unlock 변수에 계산하기 힘든 사칙연산의 결과값을 저장하고 있고,

sub()함수는 페이지에 있는 textbox의 값unlock 변수에 저장된 값과 같으면 Password is (unlock/10)를 출력한다.


열람도 가능하고 변조도 가능하기 때문에 풀이 방법은 여러가지 방법이 될 수 있다.

첫 번째로 소스코드를 열람 할 수 있는 성질을 이용할 수 있다.



사칙 연산의 내용을 볼 수 있기에 python이나 다른 스크립트를 통해 unlock의 값을 계산해낼 수 있다.

직접 손으로도 가능하긴 하다.


두 번째 방법으로는 페이지에 저장된 JS값을 그대로 불러온다.

client side script이기 때문에 관련 변수의 값이나 함수들이 다 클라이언트 쪽에 저장되어 있기 때문에

함수나 변수의 값을 클라이언트가 변조시키거나 원하는 대로 불러올 수 있다.



개발자 도구 Console에서 unlock 변수를 그대로 볼 수 있다.

이 값을 textbox안에 넣고 sub()함수를 실행시킨다. Console에서 역시 불러올 수 있고, check button을 눌러도 된다.

Password 값이 999780930.7인 것을 확인 할 수 있다.



혹은 소스코드에서 보았듯 메세지로 출력하는 내용은 Password is unlock/10 임을 알 수 있다.

sub()함수의 분기문을 만족시켜 Password를 보지 않아도 unlock/10Colsole창에 입력함으로써 Password를 가져 올 수 있다.

'wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 34번 풀이  (0) 2018.08.10
webhacking.kr 8번 풀이  (0) 2018.08.08
webhacking.kr 17번 풀이  (0) 2018.08.08
webhacking.kr 4번 풀이  (0) 2018.08.08
webhacking.kr 14번 풀이  (0) 2015.08.14
webhacking.kr 6번 풀이  (0) 2015.08.13