2번 - blind sql injection

2020. 9. 22. 01:32

※ 문제될 시에 비공개 처리하도록 하겠습니다. ※

 

한정된 공간이라며 이미 IP가 접속되어 있으니 수상한 사람이라고 인식한다는 문구가 뜨네요.

개발자 도구를 통해 웹페이지 소스를 확인해봅시다.

 

 

 

수상한 시간이 나타나고 admin.php 페이지로 간다면 혼쭐을 내준다고 하네요;;

하지말라는건 다 해봅시다 ㅋㅋ

 

 

비밀번호를 입력하는 창이 나오네요.

아무 값이나 입력했더니 Wrong이라는 메세지를 전달하는 alert 창이 나오네요.

 

그나저나 아까 시간이 의심되긴 하지만, 웹 공격 기법에 집중하도록 해보죠.

페스워드 창에 아무리 sql injection을 시도해도 아무런 변화가 없습니다.

 

그런데 쿠키 값을 보면,

 

 

time이라는 쿠키가 있습니다.

아까 그 수상한 시간과 관련이 있을까요?

데이터베이스 SQL 질의에는 FROM_UNIXTIME이라는 함수가 있습니다.

이를 통해서 time 값을 위의 시간으로 바꾸는 것 같군요.

여기에 sql injection을 시도해보죠.

 

저는 유용한 도구인 burp suite를 사용할 것입니다.

 

 

먼저 이렇게 값을 보냅니다.

 

 

09:00:01 이라는 시간이 나왔네요.

 

다음으로 false 값을 보내보겠습니다.

 

 

09:00:00 이라는 시간이 나왔네요.

아무래도 값이 True이면 09:00:01, False이면 09:00:00이 나오는 것 같습니다.

 

이를 바탕으로 데이터베이스 이름, 테이블 이름, 컬럼 이름, 값을 차례대로 알아보겠습니다.

 

먼저 데이터베이스를 알아내야죠.

and IF(LENGTH(database())> 0, 1, 0)

 

위의 쿼리는 만약 database 이름의 길이가 0보다 크면 1, 아니라면 0을 반환합니다.

점점 숫자를 늘려가면서 데이터베이스의 길이가 몇인지 알아내고, 알아낸 길이를 바탕으로 문자열을 하나씩 잘라 ascii 값을 비교 또는 문자열을 비교하며 알아내야합니다.

노가다;;

 

따라서 아주아주 심플한 python을 사용해보죠.

저는 코드를 이렇게 짰습니다.

 

 

역시 편합니다.

결과는..

 

 

이렇습니다.

 

이제 admin.php에 가서 값을 입력하면

 

 

성공입니다.

'[▒] 보안 > webhacking.kr' 카테고리의 다른 글

6번 - JS 조작  (0) 2020.09.30
5번 - sql injection  (0) 2020.09.30
4번 - brute force  (0) 2020.09.30
3번 - sql injection  (0) 2020.09.22
1번 - cookie  (0) 2020.09.19

BELATED ARTICLES

more