16번째로 푼 문제이다.! 
바로 blind sql injection! 음 정확히 말하면 블라인드?라고는 아무튼 인젝션 문제이다!

ip log table!


(ip log table)



문제 진입 전에 설명에 Ascii를 Date로 사용할 수 있다는 문구가 있다.
나는 오래 헤맨 뒤에야 이 문구의 의미를 깨달을 수있었다.



(힌트)



문제 페이지


(문제 페이지)



문제 페이지는 위와 같다.
아이피 가보이고 클릭해보면 해당 아이피의 접속 시간? 시간정보가 나온다.

소스코드를 열어서 확인해보니 hidden 값으로 몰래 값이 전달되고있었다.



(form)



idx에 값을 넣어 쿼리가 전달될 것이라고 생각해볼 수 있다.

즉 이 form문을 이용해 쿼리를 보낼 것이다.



(사용할 form문)



(사용할 form문 개조)



이 form을 이용하여 내 예상이지만 where idx=$_POST['idx']
요론 식으로 되어있지 않을까 예상이 된다.
idx니까 numeric이 겠지? 라는 기대를 가지고 1 or 1을 날려본다.



(1 or 1 injection)





(실행결과)



실행결과가 나온다.
사실 이 정보만으로 numeric이야 라고 섣불리 판단할 수 있지는 않다.
이유는 1 or 1 이렇게 전달했지만 웹 페이지 내에서 int만 parse 해서 사용하고 있을 수도 있고
그 외에 문자가 들어와서 디폴트로 줄수도 있고 다양한 변수들이 존재하지만

나의 수많은 쿼리들을 이 곳에 다 담을 수 없기에 정리한다 여기는 numeric으로 쿼터 없이 입력이 가능하다!

그 후 1 or 1 union select 77 limit 15,1 을 인젝션하다가 발견한 것이 있다.
여기서 limit 15,1 을 한 이유는 앞의 쿼리에서 14개의 행이 나오고 그 다음 내가 union 한 결과가 15행 부터 나오기에 15행 하나만 꺼내서 보기위해 그랬다.



(특이점 발견)





(특이점)



무심코 지나칠 뻔 했는데,
원래 없는 값은 1970-01-01 09:00:00 으로 나오다가
왠걸 조금 다른 값이 나온다.

불현듯 든 생각이 앞의 그 힌트였다. 혹시 데이터에 저장되고 있는것이 유닉스 타임 스탬프이고
그 값에 따라서 이 페이지에서 날짜 형태로 출력되는 걸까?
나는 유니온을 해서 77을 select 했다. 그 결과 01:17...
초로 따지면 77 !
다른 값으로 더 해보아 확인해보았다.

이제 정보를 알아낼 차례이다.!
나는 1 or 1 union select (숫자형태로 나오게 select 한글자) limit 15,1
요것을 이용하여 알아낼 것이다.

먼저 table 이름을 알아야한다.




(테이블 이름)





(테이블 이름 알아가는 중)



내가 알아낸 테이블 이름은 (기본적인거 빼고)
admin_table (누가봐도 수상하다.)
ip_    (여기까지 알아봤다. ip_table일거 같고 본 페이지에서 사용하는 테이블일 것이다.)
그 외의 테이블은 없었다.

문제 페이지에서 관리자로 로그인하는 페이지가 있었는데, 바로 관리자의 계정과 패스워드를 알아내라는 뜻인거 같다.

그렇다면 컬럼 이름을 알아내자!
컬럼이름을 쓰려면 ' ' 쿼터를 사용해야하는데, 확인은 안됬지만 왠지 쿼터정도는 막혀있을 예상이 들어 아싸라하게 char을 이용하여 컬럼이름을 검색해주었다.



(admin_table 다른 표현)



컬럼이름 알아내기 시작!



(컬럼이름 injection)





(찾아가는 중)



그 결과
id, ps
라는 2개의 컬럼만 있다는 사실을 알았다.

사실 이 정보는 관리자 로그인 페이지에서 form문에서 눈치 챌수 있었지만 확실히 하기 위해 찾아보았다.

그 다음은 id의 값을 알아낼 것이다!



(id injection)





(찾는 중)


찾아낸 아이디는 공개하지 않겠다! :)

그 다음은 비밀번호 찾기!



(비밀번호 injection)




(찾는 중)



비밀번호까지 찾았으니 관리자로 로그인 해본다!



(관리자로 로그인)





(문제 해결)



로그인 하니 바로 플래그가 나오고 문제를 해결할 수 있었다! :)




'WarGame > 500 Project' 카테고리의 다른 글

(18/500) Lord of the BOF - cobolt  (0) 2017.05.05
(17/500) Lord of the BOF - gremlin  (0) 2017.05.05
(15/500) Wargame.kr - lonely guys  (0) 2017.04.18
(14/500) Wargame.kr - strcmp  (0) 2017.04.16
(13/500) Wargame.kr - SimpleBoard  (0) 2017.04.16

+ Recent posts