반응형

문제를 풀어보자

첫 페이지 접근 시 응답 내 아래와 같은 주석이 존재함을 알 수 있다.

쿠키를 보면 time이라는 변수가 존재하는데 이 값을 변경하면 저 주석의 값이 변경됨을 알 수 있다.

이를 이용하는 것이 아닐까?


조금 더 포인트를 찾아보았다.

응답 내 admin이라는 페이지가 존재하여 들어가면 아래와 같은 페이지가 뜬다.

패스워드를 입력하는 부분인거 같아 SQL Injection으로 로그인을 bypass해보려했지만 실패했다.


마지막으로 찾은 포인트는 BOARD에 들어가면 글이 하나 있는데 접근하려하면 아래와 같이 비밀글이라며 패스워드를 요구한다.

이 또한 SQL Injection으로 bypass해보려했지만 실패하였다.


다시 처음으로 돌아가 time을 이용한 주석에서 SQL Injection을 하는 것이 아닐까하여 원래값인 time=1520154131을 time=1520154131%2b1 로 하였을 때 값이 변하는 것을 통해 SQL Injection 포인트인 것을 확인하였다.


time=1520154131+and+1=1 → <!--2070-01-01 09:00:01-->

time=1520154131+and+1=2 → <!--2070-01-01 09:00:00-->

으로 출력되는 것을 통해 blind sql injection으로 패스워드를 획득해야겠다 생각하였다.


삽질의 결과 limit가 사용이 불가한 것을 알았다. 따라서 information_schema를 통해서 데이터를 획득하는데는 한계가 있다.


아래 사진과 같이 BOARD를 눌렀을 때 상단에 FreeB0aRd라고 나오는 것을 통해 테이블명이 저것과 같지 않을까란 생각에 시도.


time=1520154131+and+(select 1+from+FreeB0aRd)=1 의 결과 <!--2070-01-01 09:00:01-->이 출력되었다.

이를 통해 해당 테이블이 존재함을 확인하였고 패스워드 획득을 위해 또 게싱을 하였다.


time=1520154131+and+(select+ascii(substr(password,1,1))+from+FreeB0aRd)>1의 결과 <!--2070-01-01 09:00:01-->이 출력되었다.


이를 통해 column명은 password임을 알았다. (데이터가 1개 뿐이였기 때문에 password도 하나일 거란 생각을 하였다. limit도 사용못하므로 1개만 했을 거란 생각도..)


efficient blind sql injection으로 할까 하다가 귀찮아서 Intruder를 돌리고 있는데 오래걸린다... 여기까지를 작성하면 다 될줄 알았는데....

Efficient blind sql injection 코드를 써보자.


음???? 코드짜고 돌린 efficient 가 더 빨랐따 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

결과로 나온 7598522ae를 패스워드로 입력하면 아래와 같은 화면이 뜬다.


저 admin manual이라는 파일을 다운을 받을 수가 있는데 다운받아 압축을 해제하려고 하면 패스워드를 입력하란다...

웹해킹.kr이니까 압축 비밀번호를 찾으라는 건 아니겠지....??

혹시나해서 게시판 비밀번호를 입력해봤지만 실패

admin 페이지도 같은 비밀번호로는 로그인 실패


다시 처음으로 온 느낌...

오!! 개이득

게싱으로 admin 테이블을 시도해봤는데 password 컬럼까지 존재를 확인했다.

time=1520154131+and+(select+ascii(substr(password,1,1))+from+admin)>1 → <!--2070-01-01 09:00:01-->


아까와 같은 방법으로 패스워드를 찾아보자.

time=1520154131+and+(select+length(password)+from+admin)=10; 를 통해 패스워드가 10자리인 것을 확인하였고 efficient blind sql injection 코드 짜 놓은 것으로 패스워드를 알아보았다.


확인 결과 0nly_admin임을 알았다.

이것을 통해 admin 페이지에 접근 완료!


써져있는 메뉴얼 패스워드로 압축을 풀면 될 듯 하다.

풀어보자~



정답 획득!


여기서는 아래와 같은 것을 깨달았다.

1. cookie의 값으로도 sql injection이 가능하다.

2. 게싱도 필요하다.

3. Intruder보다 efficient blind sql injection이 훨씬 빠르다... (Free 버전이라 Intruder가 느린건가?)

반응형

'Solve Problem > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] 5번 문제  (0) 2018.03.05
[webhacking.kr] 4번 문제  (0) 2018.03.05
[webhacking.kr] 3번 문제  (0) 2018.03.05
[webhacking.kr] 1번 문제  (0) 2018.02.13
[webhacking.kr] 새로운 시작  (0) 2018.02.13
블로그 이미지

rootable

,