Challenge 2
2번 문제입니다. 점수는 500점으로 1번에서 확 난이도가 높아졌습니다.
문제 화면입니다. 보이는 메뉴는 6개 이나 페이지소스를 보면 숨겨진 메뉴가 하나 더 있습니다. 숨겨진 메뉴는 관리자 페이지입니다.
현제 문제 페이지를 살펴보던 중 특이점을 발견했습니다.
페이지 소스를 보면 현재 날짜와 시간이 주석처리가 되어 있습니다.
쿠키에 time값으로 출력해주고 있었습니다. 이 부분이 중요합니다.
각 각 쿠키의 값을 변경하여 참일 경우 와 거짓일 경우가 다르게 출력되었습니다.
이 참과 거짓의 출력 값을 이용하여 Blind SQL Injection을 이용할 것입니다.
현재 우리가 알아야할 패스워드가 두개 입니다.
게시판에 게시글의 비밀번호 입니다.
관리자 페이지의 비밀번호를 알아내어야 합니다.
Blind SQL Injection을 이용해 봅시다.
기존에 information_schme 테이블을 이용하려 했지만 실패 했습니다.
하지만 게시판에 FreeB0aRd라는 문자열로 보아 테이블이름으로 추측 후 "SELECT password FROM FreeB0aRd;" 쿼리문을 이용해 SQL Injection을 하였습니다 .블라인드의 경우에 수동으로 할 경우 너무 오래 걸리기 때문에 Python을 이용하여 자동화 시켰습니다.
Python을 이용하여 헤더값 쿠키 부분에 ascii, substring 을 이용하여 패스워드를 획득할 수 있다.
이 패스워드를 이용하여 게시물의 내용을 확인할 수 있다.
위의 문자열을 클릭하면 압축파일을 하나 다운로드 받을 수 있다.
압축파일에 패스워드가 걸려있다. 이 부분은 패스워드 크랙으로도 풀 수 있을 것 같다.
그 다음 관리자 페이지의 패스워드를 SQL Injection을 통해 알아내야한다.
앞서 게시판과 같은 방법으로 "SELECT password FROM admin;" 이란 쿼리를 이용하여 Blind SQL Injection을 시도하였다.
해당 패스워드로 로그인하게 되면 압축파일의 패스워드를 알 수 있다.
압축파일의 html 파일을 열어보게 되면 2번 문제의 FLAG를 획득할 수 있다.
이 FLAG를 Auth페이지에 입력하면 2번 문제를 클리어할 수있다.
'Wargame | CTF > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 7 (0) | 2016.11.09 |
---|---|
[Webhacking.kr] Challege 6 (0) | 2016.11.07 |
Webhacking.kr Challenge 5 (0) | 2016.11.06 |
Webhacking.kr Challenge 4 (0) | 2016.11.06 |
Webhacking.kr Challenge 3 (0) | 2016.11.06 |