2019. 1. 13. 22:29ㆍ워게임 리뷰
Challenge no.2
사용 도구 |
BurpSuite v1.7.30 |
브라우저 |
Chrome 71.0.3578.98 (공식 빌드) (64비트) (cohort: Stable) |
#문제 분석
2번 문제 접속 하면 위와 같은 단순한 블로그(?)가 나온다.
메뉴를 살펴보면 Home / MEMBERS / RESEARCH / BOARD / FUN STUFF / CONTACT 가 있다.
HOME - 메인화면
MEMBERS - beistlab 멤버들을 소개하고 잇다
RESEAERCH - beistlab 구성원들이 수행한 연구에 대해 소개
BOARD - 암호로 잠긴 게시글이 하나 있는 게시판
FUN STUFF - 이런 저런 이야기
CONTACT - 별다른 내용 없음.
더 이상 눈으로 훑어볼 내용이 없으니 문서 소스코드를 살펴보자.
이상하게도 조금 전에 봤던 메뉴에 없는 admin 페이지가 보인다. 또한 현재 시각으로 보이는 날짜와 시간이 주석처리 되어 있는 것을 확인했다.
먼저 새롭게 발견한 관리자(admin) 페이지 부터 접속해 본다.
admin 페이지에 접속해보면 패스워드를 입력하고 로그인할 수 있는 화면이 나온다.
서버로 어떤 요청을 보내는지 확인하기 위해 Burpsuite 프록시 기능을 이용해 캡쳐해보았다.
POST 방식으로 입력한 패스워드를 password 라는 값으로 전송하고 있으며, 세션값을 담아두는 PHPSESSID 이외에 time 이라는 특별한 쿠키가 하나 더 존재한다. 쿠키 이름과 메인 페이지 소스코드에서 주석처리 되어 있던 날짜, 시간 정보를 통해 time의 쿠키값에는 현재 시간정보가 담길 것으로 추정.
or 1=1 / ' or '1'='1';-- / ' or '1'='1';-- - 등 과 같은 SQL 인젝션 쿼리를 전송해 보았으나, 별다른 정보를 획득할 수 없었음.
BOARD 메뉴로 들어가보면 FreeB0aRd 라는 제목으로 게시판이 나타난다. 글쓰기 등의 다른 버튼은 없는 것 같아 해당 게시글을 확인해 봤다.
내용을 보려 했으나, 암호로 보호되어 있다. 또한 입력할 수 있는 문자는 최대 10글자로 제한 되어 있었다.
<input type="password" name="Password" maxlength="10" size="10">
SQL 인젝션을 수행해보았지만 관리자 페이지와 마찬가지로 별다른 결과를 얻지 못했다.
① 결과적으로 SQL 인젝션을 통해 별다른 데이터를 획득할 수 없었다. => 다른 인젝션 방법 시도 필요
② 게시글 패스워드 최대 입력길이는 10글자. => 비밀번호는 10글자보다 적을 것이라 가정
③ 현재 시간 정보를 담는 time 쿠키값이 존재
④ 게시판 이름 => FreeB0aRd
#풀이
생각해보니 맨 처음 확인했던 index 문서의 소스코드에서 현재 시간을 기록하고 있었다.
여기에서 time이라는 쿠키값은 분명 서버에서 뭔가 처리를 할 것이라고 판단했고, time 쿠키값에 ' 를 입력해 서버로 전송해 보았다.
결과는 아래 이미지와 같이 정상적인 time 쿠키값 전송시에는 현재 시간이 정사적으로 주석처리되어 출력되고 있지만, 쿠키값에 ' 를 붙여 전송한 경우에는 해당 주석이 사라진다. 즉 취약점이 존재함을 확인했다.
이 실험을 토대로 time 쿠키 값에 SQL 인젝션 구문을 입력해 보기로 했다.
Cookie: time=1547393960 or 1=1
Burp suite를 이용해 위와같이 입력 후 서버로 전송했더니, 주석값에 변화가 생겼다. 현재 시간이 아닌 2070-01-01 09:00:01 이라는 엉뚱한 날짜와 시간이 출력되었다.
작성 중...
본 게시글은 webhacking.kr 문제를 풀며 풀이과정을 정리한 글 입니다.
'워게임 리뷰' 카테고리의 다른 글
Challenge 1 (0) | 2019.01.13 |
---|---|
Challenge 33 (0) | 2018.12.26 |
Challenge 10 (0) | 2018.12.26 |
DB 별 주석처리 방법 (0) | 2018.12.25 |