[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 |
댓글