티스토리 뷰



먼저, 로그인 페이지에서 webhacking.kr 계정으로 로그인 해 보았지만 실패.

Join 버튼은 "Access_Denied" 라는 메세지만 뜬다.



요소 검사를 해보면 "Join" 버튼을 눌렀을 때 단순히 메세지 박스만 뜨도록 해 놓았다.


로그인 페이지가 http://webhacking.kr/challenge/web/web-05/mem/login.php 이니까,

게싱으로 가입 페이지는 http://webhacking.kr/challenge/web/web-05/mem/join.php 라고 생각해볼 수 있겠다.

(존재하지 않는 페이지일 경우 404 에러 메세지가 나오므로, 숨겨진 페이지를 찾았다고 볼 수 있음)


들어가면 텅텅 빈 페이지가 나오는데, 한번 더 요소 검사를 해보자.



분석하기 어렵도록 난독화된 자바 스크립트와 함께 무언가 오류로 스크립트 실행이 중단된 것을 볼 수 있다.

이제 이 난독화된 자바스크립트를 뜯어 보자.

먼저, script 안에 커서를 위치하고 F2 를 눌러 수정 모드로 들어가서, 스크립트 전체를 복사한다.


Online Javascript Deobfuscator http://jsbeautifier.org/ 

에서 스크립트를 보기 좋게 정리하면 다음과 같다.




41번째 줄까지 특정 함수에 문자를 대입하고, 42번째 줄부터는 eval을 통해 코드를 조합해서 실행하고 있다.

45번째 분기문에서는 무엇인가를 체크하고, 메세지와 함께 페이지를 뒤로 되돌려보내는 반면, 

49번째 줄부터는 html 에 POST요청을 보낼수 있는 폼을 작성하는 것이 보인다.

이미 페이지의 스크립트가 실행되어 위에 있는 변수들은 모두 저장되었으니, 49 ~ 55번째 코드를 복사해, 크롬 터미널에서 실행한다.



아무 오류 없이 화면에 폼이 나타난다면 잘 따라 한 것이다. 아무것도 안뜨거나 오류가 난다면 차근차근 다시 해보자.


이제 아이디를 만드는데, id 입력칸이 5글자로 제한되어 있고, "admin" 아이디는 이미 존재한다고 한다.

아무 아이디나 만들고 로그인을 시도해보면 아이디가 "admin"이 아니라고 하는데,

document.write('<table border=1><tr><td><font color=gray>id</font></td><td><input type=text name=' + lllllllll + llll + ' maxlength=5></td></tr>');

이 코드에서 maxlength 속성을 5보다 더 큰 수로 바꿔주고, 아이디를  "admin "와 같이 뒤에 공백을 주고 만든다음 다시 "admin" 으로 로그인하면 문제가 풀린다. 추측으로 생각해본 것인데, 어떤 취약점과 연관되어있는지는 잘 모르겠다.



'Web - Security > * webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 6번 문제 - 100p  (0) 2016.04.15
[webhacking.kr] 4번 문제 - 150p  (0) 2016.04.15
[webhacking.kr] 1번 문제 - 200p  (0) 2016.04.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함