2번 문제를 클릭하면 홍길동 인물이 명상을 하고 있는 그림이 보인다. 또한, 상단의 ABOUT, MEMBERS 등 클릭할 수 있는 메뉴가 존재한다.



문제의 단서를 찾으려면 우선 이것 저것 클릭하는 것도 좋지만, 소스코드를 봐야한다. 메인 페이지의 소스코드를 보면 admin/ 링크가 걸려있고, 날짜와 시간이 주석 처리 되어 있다.

 

주석 처리가 되어 있는 부분은 힌트같아 보인다.



admin/ 링크를 클릭해보니 패스워드를 입력하여 로그인을 해야 하는 페이지가 보인다. 메인페이지의 상단에 위치한 용그림을 클릭해도 admin 페이지로 이동된다.



상단 매뉴의 BOARD를 클릭하면 한개의 글이 올라와져 있다. 게시판 제목이 FreeB0aRd이다.



게시글을 클릭해보니 패스워드가 설정되어 있다.



패스워드를 입력해야 하는 곳은 admin 페이지와 비밀글 페이지이다.


쿠키 값의 time 필드에 있는 값과 메인 페이지의 주석 처리되어 있는 시간 값과 연관이 되어 있을 것 같아 참을 의미하는 SQL 인젝션 구문을 주입한다.



좀 전과 다르게 시간이 09:00:01로 변경됐다.



거짓을 의미하는 SQL 인젝션 구문을 주입한다.




SQL 인젝션 구문이 참이면 01로 변경되고, 거짓이면 00으로 변경된다.



admin 페이지의 패스워드와 게시글의 패스워드를 알아야 이 문제를 풀 수 있다.


쿠키 값의 time 필드를 이용하여 SQL 인젝션을 하기 앞서 admin 페이지의 테이블은 admin, 게시판의 테이블은 FreeB0aRd(게시판의 해당 문자열 있음)로 추측하고, 아래의 공격 구문을 파이썬 스크립트로 작성한다.


and (select length(password) from FreeB0aRd) = ?

and (select ascii(substring(password,1,1)) from FreeB0aRd)= ?


솔직히 패스워드 길이는 수동으로 해도 금방 알 수 있지만, 패스워드 문자열은 돌려야 한다.


패스워드 걸린 게시글을 클릭하여 획득한 FreeB0aRd 테이블의 패스워드를 입력하면 파일을 다운로드 받을 수 있는 링크가 존재한다. 해당 링크 클릭한다.



압축 파일을 해제하니 패스워드를 요구한다.



admin 페이지로 접속하여 획득한 admin 테이블의 패스워드를 입력하면 메뉴얼 패스워드가 존재한다.



이 패스워드를 압축 해제 패스워드 입력 폼에 대입하면 압축이 정상적으로 해제되면서 manual.html 파일이 생성된다. manual.html 파일을 더블클릭하면 2번 문제의 키가 출력된다.



▶ WebHacking.kr 1번 문제 풀이

▶ WebHacking.kr 3번 문제 풀이

▶ WebHacking.kr 4번 문제 풀이

▶ WebHacking.kr 5번 문제 풀이

▶ WebHacking.kr 6번 문제 풀이

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유