본문 바로가기

wargame/webhacking.kr

webhacking.kr 21번 문제

안녕하세요 :)



오늘은 webhacking.kr 21번 문제를 풀어 보도록 하겠습니다.


정말 깔끔하게 BLIND SQL INJECTION이라고 명시가 되어있습니다.


기본 파라미터로는 no id pw가 있는데요

저는 no 파라미터만 이용하여 문제를 풀었습니다.


sql injection을 기본적으로 알고 있다는 전제 하에 문제 풀이를 하겠습니다.


no를 1,2,3,~ 해보면 no가 1과 2가 존재한 다는 것을 알 수 있습니다.

그러면 이 두가지의 pw을 알아내는 것이 최종 목표입니다.



저는 간단한 sqlinjection을 이용하여 pw를 알아냈는데요


URL?no=1 and ascii(substr(pw,1,1))=97

위의 쿼리를 이용했습니다.

해석을 해보자면  substr이라는 함수를 이용해서 pw의 글자 하나를 추출합니다.

ascii를 이용하여 추출한 한 글자를 아스키 코드로 변환 시켜줍니다.

이 아스키 코드를 32~127(아스키코드 범위)와 비교하는 방법입니다.


맞으면 True를 출력해 주겠죠?


이 방법 외에도 더 짧은 시도로 pw를 알아낼 수 있습니다.

substr(hex(substr(pw,1,1)),1,1) 

pw의 한글자를 추출하여 hex로 변경 한 후 찾는 방법이죠


또 bin을 이용해서 더 짧은시도로 풀 수 있습니다.

등등 저는 그냥 ascii를 이용하여 풀었습니다.


POC code 입니다.

requests 모듈을 사용했습니다. ㅎㅎ :)


실행 결과


no =1 의 pw는 guest 입니다.



no 2의 password는 blindsqlinjectionkk 이네요 ㅎㅎ



password는 "blindsqlinjectionkk" 입니다.

'wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 25번 문제  (0) 2017.06.13
webhacking.kr 23번 문제  (0) 2017.06.13
webhacking.kr 21번 문제  (0) 2017.06.13
webhacking.kr 18번 문제  (0) 2017.06.13
webhacking.kr 17번 문제 풀이  (0) 2017.06.13
webhacking.kr 16번 문제  (0) 2017.06.13