웹 문제이다.
문제에 들어가자마자 보이는 것은 그림 1과 같이 ID와 PW를 입력하는 폼이 존재하고, Join 버튼이 있다.
회원가입 / 로그인 해킹 문제임을 가늠할 수 있다.
문제 1에서는 문제 풀이를 위한 소스코드가 제시되어 있었지만
여기서는 추가적인 정보가 제공되지 않는 것 처럼 보인다.
우선 폼이 보인다면, 개발자 도구를 통해 폼을 분석하는것이 올바르다.
폼이 submit 되었을때, POST 메소드로 값을 전달한다.
Join 버튼을 눌렀을 경우, 곧장 submit 되는 것이 아니라, chk_form이라는 Javascript 함수를 실행한다.
chk_form은 id와 pw 필드의 값을 비교해 두 값이 같다면 초기화를 시키고, 아니면 submit를 시키는 듯 하다.
스크립트 아랫쪽의 힌트를 보아하니 id 필드와 pw 필드의 값이 같아야 Authkey를 획득 할 수 있는 듯 하다.
결론적으로, Javascript 구문을 우회할 수 있어야 한다.
이 문제에서 javascript를 우회하기 위한 방법은 무궁무진하다.
그 중 콘솔을 사용해보고자 한다.
크로뮴의 경우에는 개발자 도구에서 아래의 그림 3과 같이 Javascript 콘솔을 지원한다.
때문에 콘솔을 통해서, 폼을 강제로 submit 시키는 방식을 이용하고자 한다.
그림 4와 같이 id 필드와 pw 필드에 같은 값을 넣은 후
그림 5와 같이 chk_form() 함수에서 사용된 submit 구문을 그대로 작성한다.
(물론, 이것 말고도 submit을 시킬 수 있는 방법은 다양하다)
그림 6과 같이 Authkey가 출력된다.
사실, web02 폼은 POST로 값을 전달한다고 되어있지만,
1번 문제의 Request 객체를 똑같이 사용하기 때문에 GET 메소드로도 인자를 전달 할 수 있다.
그림 7과 같이 파라미터를 넣은 다음 엔터를 치면
그림 8과 마찬가지로 Authkey를 획득 할 수 있다.
따라서, Flag 값은 Bypass javascript 이다.
'Wargaming > SuNiNaTaS' 카테고리의 다른 글
[ SuNiNaTaS ] Game 01 (0) | 2022.03.05 |
---|