2017/08/16 - [Study :)/WarGame] - [SuNiNaTaS] 1번문제, replace함수, mid함수
2번 문제
2번 문제를 보면 단순히 아이디와 패스워드를 치고 로그인(?)하라는 창만 나타나게된다.
아래 부분에 보면 Authkey라고 해서 표시가 된다.
왠지 ID와 PW를 찾으면 인증키가 표시되는것 같다는 느낌이 있다.
일단 해당 페이지의 소스코드를 뜯어보자.
소스 스크립트 부분에 chk_form()함수가 있으며, id값과 pw값을 불러와 비교를 한다.
id와 pw가 같으면 "You can't join! ..."이라는 메시지가 출력되면서 id값과 pw값이 초기화 된다.
id와 pw값이 다르면 submit()함수가 실행되어 어떠한 행위를 하는 것 같다.
그런데 스크립트 아래쪽 주석을 보니 힌트가 적혀있다. id값과 pw값이 같아된다고 써있다..
뭔가 앞뒤가 맞지 않는 힌트인 것 같지만, 해당 문제는 if문, 즉 JavaScript를 우회하라는 문제이다.
id 값과 pw값이 같아도 if문에 걸리지 않고 submit()함수를 실행시키면 문제를 풀 수 있을 것 같다.
브라우저 콘솔 기능을 이용한 우회방법
크롬에서 F12버튼을 누르면 개발자모드로 들어가게 된다.
그러면 해당 페이지의 소스등.. 자세한 개발자기능들을 제공하게 된다.
우린 여기서 콘솔기능을 이용하여 우회 할 것이다.
먼저 ID와 PW값에 아무 똑같은 값을 넣어준다.
그리고 나서 콘솔로 간다.
필자는 아무생각 없이 document.web02.submit(); 명령어를 실행 시켰다가 쓸데없이 삽질(?)을 했다.
기본적으로 콘솔은 주프레임이 top으로 설정되어 있다. 이는 top부분에서 콘솔을 실행시킨다는 것이다.
우리가 원하는 스크립트는 web02.asp 파일 안에 body부분에 있으므로, 이를 변경 시켜 주어야 필자같은 삽질(?)을 피할 수 있다.
위 사진처럼 주 프레임을 main(web02.asp)로 설정하여 주고 document.web02.submit(); 명령어를 실행하게 되면, id와 pw값이 같으면 인증키를 표시하여 준다.
Paros를 이용한 우회방법
먼저 파로스를 사용하기 위해서 웹브라우저에서 프록시 설정을 해주어야 한다.
기존 웹브라우저 <-> 인터넷 방식에서
웹 브라우저 <-> 파로스 <-> 인터넷 방식으로 중간에서 파로스를 거쳐서 통신을 하게 만들어야 한다.
파로스는 기본 설정으로 8080포트를 이용하여 프록시를 하기 때문에 웹브라우저에서 localhost:8080 포트를 향하게 설정하여 주자.
위 사진처럼 크롬 설정>프록시 설정 열기>LAN설정>프록시 서버 부분을 사진과 같이 변경하여 주자.
그리고 나서 프록시를 실행시키고, SuNiNaTaS 사이트에 접속하여 파로스 왼쪽 부분에서 통신하는 패킷을 수집한 정보를 나타내여 준다.
우리는 파로스의 Trap기능을 사용하여, 통신을 가로채서 패킷을 변조하여 통신하는 방향으로 진행 할 것이다.
먼저, level2의 ID와 PW를 서로 다르게 입력한다.(필자는, Eunice / 1234로 입력하였다.)
그리고 나서 Trap기능에 "Trap request"를 체크하였다. 이를 체크하게 되는 송신하는 패킷을 Trap시킨다는 의미다.
그리고 나서 Join버튼을 눌러보자.
그러면 Trap부분에서 Resquest되는 패킷을 가로채서 대기상태로 바뀌게 된다.
그럼 우리가 입력한 ID와 PW값이 평문으로 나타나게 되는데, 이를 수정할 수 있다.
여기서 PW부분을 ID와 똑같이 바꾼 후, "Trap request"를 체크 해제(더이상 Trap하지 않기 때문에) 한 후 "Continue"버튼을 클릭하면 웹화면에 인증키가 표시 될 것이다.
2017/08/17 - [Study :)/WarGame] - [SuniNaTaS] 3번 문제, 게시판 글쓰기 우회