Game/webhacking.kr

[300] prob5

ellen28 2015. 5. 29. 19:17

300점짜리 5번 문제이다...

점수가 올라갈수록 어려워져서 힌트를 점점더 많이 보게된다 ;.;


문제에 들어가면 이처럼 login버튼과 join버튼이 뜬다. 


로그인 버튼을 누르면 이렇게 로그인 폼이 뜬다.


login을할때 admin으로 로그인하고 비밀번호를 치면 잘못된 패스워드라고 나오고,

admin이아닌 다른 아이디를 치면 admin이 아니라면서 내쫓는다..


그렇다면 join에서 무언가 할 수 있지 않을까 생각해보았는데 

join버튼을 누르면 접근 금지라면서 내쫓는다..

소스를 보니 아예 join버튼을 누르면 접근금지가 뜨게 되므로 다른 방법을 찾아야할 것 같았다.


우선 login페이지에서 login.php가아닌 join.php로 바꿔보았다.

이처럼 까만 창이뜬다.

소스를 확인해보니

이처럼 보기힘든 스크립트가 뜬다.

스크립트를 보기좋게 정리해주는 

http://jsbeautifier.org/ 에 붙여넣고 정리해보았다.

그후 노트패드로 옮겨서 확인해보았다. 

언뜻보면 굉장히 복잡한데 사실 중요한 부분은 document.write~~인 부분이다.

if문이 충족되면 join폼을 만들어준다.




그렇다면 그냥 크롬의 콘솔창에 join의 폼을 만들어주는 부분을 붙여넣었다.

!! join폼이 만들어지는 것을 볼 수 있다. 


얼른 admin을 입력하고 제출 버튼을 누르니

admin은 이미 존재한다고 한다..


사실 여기서부터는 어떻게 헤쳐나가야할지 잘 모르겠어서 인터넷에 있는 풀이를 참고했다.

폼을 만들어줄때 id의 maxlength를 5보다 크게 설정해준다.

그리고 'admin ' 처럼 admin뒤에 공백을 하나 추가하여 가입해준다. 


그리고 나서 다시 로그인 페이지로 돌아와서 admin, 내가 가입할때쓴 비밀번호로 로그인하니

문제가 풀렸다!



풀이 참고 ( http://wooeong.tistory.com/entry/webhackingkr-5%EB%B2%88-%EB%AC%B8%EC%A0%9C )