들어가면 위의 화면이 뜬다.
pregmatch 함수를 보면 select, from, &가 필터링되어있는 것을 확인할 수 있다.
Mysql에서 Reserve된 Keyword들이 여러개 있다. (select, from, where, in, like, limit...)
기본적으로 이 키워드들은 대소문자를 구별하지 않는다. 따라서 SeLect나 select나 다 똑같은 값으로 읽힌다.
하지만 이거랑 반대로 php는 모든 문자열에대해 case sensitive이다. 대소문자를 구별한다는것이다.
따라서 위에서는 select만 필터링되어있기 때문에 SeleCt라고 써도 php는 다른 문자열로 인식하고 Mysql에서는 같은 문자열로 인식하기 때문에 우회가 가능하다.
근데 코드에서 admin의 no가 2라고 하였기 때문에 select문을 신경안쓰고 no에 2를 넣는 방법만 생각하면 될거 같다.
그냥 2만 입력하면 id가 guest이고 no가 2인 id를 select하는 것이다.
따라서 -1%09or%09no=2라고 입력하면 풀릴것이다.
GET 방식으로 받아오는 것이기 때문에 그냥 url 창에 입력하였다.
풀렸다.