이번에 포스팅할 문제는 2번 문제입니다.


보시다시피 배점이 상당히 높은 축에 속하네요.


문제로 들어가봅시다.



윗줄의 이미지맵 부분을 제외하고는 별로 특별한 건 없어보이네요.


페이지도 봤으니 이제 소스를 봅시다.



제일 먼저 눈에 띄는 건 주석에 현재 시간이 표시된다는 것입니다.


그리고 이미지맵 부분을 보면 admin 페이지가 노출되어있다는 것도 알 수 있습니다.


(admin 페이지로 이동하는 이미지맵은 용의 머리 부분입니다.)



쿠키를 보니 time 이라는 쿠키가 생성되었네요.


값을 대입해 본 결과 2070-01-01 09:00:00을 기준으로 시간(초)이 지난 정도를 나타내는 값이었습니다.


(숫자가 커지면 시간이 2070-01-01 09:00:00을 기준으로 줄어듭니다.)





결과가 false인 식을 대입했더니 위와 같이 식의 값이 0(false)이라는 주석값이나왔습니다.


time 쿠키를 이용해 Blind SQL Injection을 할 수 있을 것 같군요.



아까 소스에 노출되어있었던 admin page 로 들어갔습니다.


주석값으로 비밀번호를 바로 알 수는 없으니까 길이부터 찾아보도록 합시다.


admin page 라 데이터베이스의 테이블명은 admin, 비밀번호가 있는 칼럼은 password라고 유추한 다음 Injection을 수행하였습니다.




테이블명과 칼럼은 생각과 맞아떨어졌네요.


위 쿼리문을 수행해 나온 주석 값으로 admin page의 비밀번호는 10자라는 것을 알아냈습니다.



다른게 더 있나 페이지를 돌아보는 도중 FreeB0aRd라는 페이지를 하나 더 찾았습니다.


(이미지맵의 BOARD를 클릭하면 들어가집니다.)


게시물이 등록되어있는데 이 게시물도 비밀번호가 걸려있습니다.


admin page 에서처럼 데이터베이스 테이블명은 FreeB0aRd, 비밀번호가 있는 칼럼은 password라고 유추했습니다.




admin page 와 마찬가지로 테이블명과 칼럼이 생각과 맞아떨어졌습니다.


쿼리문을 수행해 나온 주석값으로 FreeB0aRd의 게시물 비밀번호는 9자리라는 것을 알아냈습니다.


이제 파이썬으로 각 페이지의 비밀번호를 알아내는 코드를 짜면 됩니다.



출력 가능한 아스키 문자 범위 내의 문자를 하나씩 대입시키며 테이블에서 한 글자씩 비교를 해나가는 브루트포싱 코드입니다.


※파일: webkr2passwd.py


※참고: 미국정보교환표준부호



FreeB0aRd와 admin page의 비밀번호 찾기를 완료했습니다.


비밀번호도 알아냈으니 이제 비밀번호가 걸려있던 게시물과 페이지의 내용을 확인해봅시다.



여기에 아까 찾은 FreeB0aRd의 비밀번호를 넣어보도록 하겠습니다.



게시물이 성공적으로 표시됩니다.


admin manual 을 눌러 파일을 다운받읍시다.



__AdMiN__FiL2.zip 이라는 파일이 다운받아졌습니다.


열어서 확인해봅시다.



압축 파일 내의 manual.html 파일을 열어보려 했지만 다시 암호를 입력하라고 뜨는군요.


아직 확인하지 않은 admin page부터 확인해봅시다.



admin page에 메뉴얼 패스워드가 나와있습니다.


이제 이걸 입력한 후 html 파일을 열어봅시다.



파일이 성공적으로 열렸습니다.


여기서 나온 패스워드를 Auth로 가서 입력하면 2번 문제가 클리어됩니다.




이렇게 2번 문제도 성공적으로 클리어했습니다.


다음은 이어서 3번 문제 포스팅을 하도록 하겠습니다.

'웹해킹 > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 1번 문제  (0) 2017.02.18
[webhacking.kr] 회원가입  (0) 2017.02.16

+ Recent posts