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/10을 Colsole창에 입력함으로써 Password를 가져 올 수 있다.
'wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 34번 풀이 (1) | 2018.08.10 |
---|---|
webhacking.kr 8번 풀이 (0) | 2018.08.08 |
webhacking.kr 4번 풀이 (0) | 2018.08.08 |
webhacking.kr 14번 풀이 (1) | 2015.08.14 |
webhacking.kr 6번 풀이 (1) | 2015.08.13 |