본문 바로가기
Wargame/webhacking.kr

webhacking.kr 2번

by morae23 2019. 1. 29.

[Cookie-Based SQL Injection, Blind SQL Injection]

 

2번 문제를 열면 아래와 같은 화면을 볼 수 있다.

 

 



 

 

페이지 곳곳을 둘러 보면 패스워드를 입력받는 곳을 두 군데 볼 수 있다.

첫 번째는 Board이다.

 

 



 

 

두 번째는 아래와 같은 admin 페이지이다.

 

 



 

 

이 때 패스워드 창 자체에서는 SQL Injection이 힘들어서 페이지 내에서 다른 요소들을 찾아야 한다.

 

이 때, 쿠키를 보면 다른 문제들과 달리 time이라는 쿠키 값이 있는 것을 볼 수 있다.

 

 



 

 

또한 페이지 내의 주석을 보면 시간이 나타나 있는 것을 볼 수 있다.

 

 



 

 

쿠키 값과 관련이 있는 듯하여 time을 true로 바꾸어 보았다.

 

 



 

 

그 결과, 2070-01-01 09:00:01 이 나타난다.

 

 



 

 

false일 때 또한 확인해 보았다.

 

 



 

 

flase일 때는 2070-01-01 09:00:00 이 나타난다.

 

 



 

 

이 점을 이용하면 Blind SQL Injection이 가능할 것으로 보인다.

이 때 테이블과 컬럼 이름을 알아야한다.

 

그런데 admin 페이지를 보면 form의 이름이 admin이고

input type=”pasword의 이름이 password이므로

이 것이 각각 테이블명과 컬럼명이라고 가정해보았다.

 

 



 

 

그 결과 참을 의미하는 09:00:01을 얻을 수 있었다.

 

 



 

 

이제 실제 패스워드를 알아오면 된다.

코드는 아래와 같다.

 

 



 

 

실행 결과, 패스워드 길이는 10이고 패스워드는 0nly_admin 임을 알 수 있다.

 

 



 

 

admin 페이지에서 위의 패스워드를 입력하면 아래와 같은 화면을 볼 수 있다.

메뉴얼 패스워드가 나온 것을 보면 여기서 끝이 아니라 이 후의 과정이 있는 것으로 추측된다.

 

 



 

 

처음 문제를 파악할 때 본 것처럼 패스워드를 입력 받는 또다른 페이지인 Board의 패스워드도 같은 방법으로 추출해보았다.

 

이 때의 테이블명은 Board 페이지의 상단에 적혀있는 FreeB0aRd 였다.

 

 



 

 

코드를 실행하면 위와 같이 패스워드 길이와 패스워드를 알 수 있다.

위 패스워드를 입력하면 admin manual 파일을 받을 수 있다.

 

 



 

 

이 파일을 다운 받은 뒤 압축을 풀어 메뉴얼 패스워드를 입력하면 manual.html 파일을 얻을 수 있다.

 

 



 

 

이 파일을 열어보면 패스워드가 나오고, 이 것을 이용하여 인증하면 clear할 수 있다.

 

 



 

 



 

 



'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 9번  (0) 2019.01.29
webhacking.kr 3번  (0) 2019.01.29
webhacking.kr 8번  (0) 2019.01.29
webhacking.kr 35번  (0) 2019.01.29
webhacking.kr 32번  (0) 2019.01.29

댓글