본문 바로가기

Hacking/- Webhacking.kr

[Webhacking.kr] Problem 02-2

반응형

앞의 내용에 이어서 계속 하도록 하겠다.


공격할 부분을 발견했으니 이 부분을 이용해서 Blind SQL Injection으로 비밀번호 정보를 가져오면 된다. 원래는 한 글자를 추출하는데 최적화된 방법으로 하더라도 7번의 비교를 해야지만 알아낼 수 있는데, 이 경우에는 약간 편법을 사용하면 1번의 시도로 1글자를 가져오는 것이 가능하다.


앞의 내용을 살펴 보면 공격할 부분이 from_unixtime이라는 함수를 사용하기 때문에 특정한 숫자에 문자의 ascii code를 추가적으로 더해준 값을 넣어주면, 이것을 다시 timestamp값으로 변경하고 특정한 숫자를 빼주게 되면 바로 그 문자의 ascii code를 얻을 수 있으므로, 1번의 시도로 1글자를 가져오는 것이 가능하다.


Blind SQL Injection을 하기 위해서는 table 이름과 column 이름에 대한 정보를 가지고 있어야 한다. 그래서 information_schema를 통해서 정보를 가져오려고 했으나 실패를 했다.... 아무래도 information_schema에 대한 내용을 필터링하고 있는 것으로 보인다. 그렇기 때문에 추측을 통해서 table 이름과 column 이름을 알아내어야 한다.


게시판의 table 이름을 알아내기 위해서 페이지를 뒤저본 결과 게시판 페이지에서 게시물 목록의 상단 부분에 FreeB0aRd라고 쓰여 있는 것을 확인할 수 있었다. 즉 이것을 통해서 게시판의 table 이름이 'FreeB0aRd'라고 유추를 하였고, 보통 비밀번호 column을 'password'로 많이 해놓기 때문에 이렇게 알아낸 정보들이 맞는지 확인하기 위해서 아래와 같은 값을 time의 쿠키 값으로 넣어주었다.

1457687009 and (select length(password) from FreeB0aRd)>0


잘 작동하는 것을 확인하였기 때문에 이 추측이 맞았다는 것을 알 수 있었다. 그래서 이것을 손으로 직접 계산하는 것이 불가능하기 때문에 Python Code로 자동화 시켜서 값을 뽑아내었다. 그리고 이 얻은 password의 값으로 게시물을 열었더니 아래와 같은 모습을 볼 수 있었다.



그래서 여기서 admin manual을 클릭해서 파일을 다운로드를 받고 실행을 했더니 암호가 걸려 있는 압축파일이어서 열어볼 수가 없었다. 확장자 명이 zip이기 때문에 인터넷에 돌아다니는 zip password cracker를 돌려서 알아낼 수도 있지만, 매우 비밀번호가 복잡할 것 같았고, 관리자 페이지에 저장을 해놓지 않았을까 생각해서 이번에는 admin 페이지의 비밀번호를 Blind SQL Injection으로 알아내면 되겠다고 생각했다.

관리자 페이지의 경우에는 table 이름이 'admin'이고, 비밀번호 column 이름을 'password'이라고 유추를 하고 이것이 맞는지 확인하기 위해서 아래 값을 time의 쿠키 값으로 넣어주었다.

1457687009 and (select length(password) from admin)>0


잘 작동하는 것을 확인하였기 때문에 이 추측이 맞았다는 것을 알 수 있었고, 앞에서 한 것과 비슷하게 Python Code로 자동화 시켜서 password 값을 뽑아내었다. 그리고 이렇게 얻은 password를 이용해 로그인을 했더니 아래 그림과 같이 압축파일의 비밀번호를 획득할 수 있었다.



역시 특수문자가 들어있었고 길이도 상당히 길었다.... 역시 BruteForce로 했다면 절대로 성공하지 못했을 것이다... 어쩄든 이렇게 얻은 알집 파일의 비밀번호를 가지고 인증을 해서 압축을 풀어서 파일을 연 결과 아래와 같이 패스워드 정보를 가지고 있었다.



이 패스워드 정보를 인증 페이지에 넣고 인증하면 2번 문제가 해결된다.


반응형

'Hacking > - Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Problem 03  (0) 2016.07.11
[Webhacking.kr] Problem 02-2  (0) 2016.03.19
[Webhacking.kr] Problem 02-1  (0) 2016.03.18
[Webhacking.kr] Problem 01  (1) 2016.03.12
[Webhacking.kr] 0. webhacking.kr 소개  (0) 2016.03.10