소스를 확인해본다.
<area shape="rect" coords="15,8,517,54" href="index.php" target="" alt="" />
<area shape="rect" coords="339,63,403,93" href="about.php" target="" alt="" />
<area shape="rect" coords="413,63,490,92" href="member.php" target="" alt="" />
<area shape="rect" coords="500,63,582,92" href="research.php" target="" alt="" />
<area shape="rect" coords="592,63,651,92" href="bbs/index.php" target="" alt="" />
<area shape="rect" coords="662,64,745,93" href="fun.php" target="" alt="" />
<area shape="rect" coords="756,63,825,93" href="contact.php" target="" alt="" />
<area shape="rect" coords="851,7,890,65" href="admin/" target="" alt="" />
admin 이란 페이지를 찾았다.
쿠키를 확인해보면 time 이라는 값이 있다.
이 부분이 Injection 포인트가 되며 소스값에 주석으로 표시되는 시간값이 참/거짓을 알 수 있는 부분이 된다.
time=1397298833 뒤에 and 1=1 과 1=2 를 넣어서 참/거짓일 때의 서버반응을 확인해보았다.
1. 참 일때의 반응
<!--2070-01-01 09:00:01-->
2. 거짓 일때의 반응
<!--2070-01-01 09:00:00-->
참과 거짓일때의 반응을 확인했다. 이제 테이블명과 컬럼명을 알아내야 하는데 이부분에는 게싱이 필요하다.
이 부분에서 상당히 헤매다가 admin 페이지 라면 테이블 명도 admin 이라고 생각을 하였고 패스워드 컬럼명은 당연히
password 라고 생각을 하고 Injecton 을 시작하였다.
time=1397298833 and (select ascii(substring(password,1,1)) from admin)>
(이부분에서 select 앞에 왜 괄호가 들어가는지 궁금하여 리셋이에게 물어봤더니 앞부분과 비교를 하려면 괄호로
묶어줘야 한다고 한다.)
password : 0XXXXXXXXX
해당 암호를 통해 admin 페이지에 로그인을 시도하였다.
메뉴얼 패스워드라고 하는걸 보니 무언가 더 남아있는 것 같다.
사이트를 좀더 돌아다니다보니 게시판에서 비밀글을 발견하였다.
해당 게시판 상단에 FreeB0aRd 라고 써있는것으로 보아 테이블명은 FreeB0aRd 라고 추측하고 또다시
인젝션을 시도하였다.
time=1397298833 and (select ascii(substring(password,1,1)) from FreeB0aRd>
password : 75XXXXXXX
해당 암호를 통해 게시글을 조회하니 zip 파일이 하나 있었고 위에서 알려준 메뉴얼 패스워드를 통하여 압축을
해제하니 암호를 얻을 수 있었다.
'Wargame(CTF)' 카테고리의 다른 글
Webhacking.kr 5번 (0) | 2014.04.13 |
---|---|
Webhacking.kr 4번 (0) | 2014.04.13 |
Webhacking.kr 3번 (0) | 2014.04.12 |
Webhacking.kr 1번 (0) | 2014.04.12 |
Oldzombie's Wargame 1~8 (0) | 2007.03.08 |