id가 admin인 결과를 반환해야하는데 문자열 admin에 필러팅이 걸려져 있다. 그럼 그동안 풀었던 방법대로 or와 Hex 값을 넣어줌으로써 풀이하면 될까? 이 방법도 '를 필터링을 걸어줌으로 막고 있었다.
Try - 1
0x27은 '의 아스키코드 Hex 값이다. 혹시나 '를 아스키코드 Hex 값으로 넘겨주면 인식하지 않을까? 라는 생각에 넣어봤지만 실패하였다.
Try - 2
webhacking.kr의 문제 풀이를 하면서 배웠던 공백을 이용한 방법을 이용해봤다. 만약 mysql에서 id 컬럼을 만들 때 varchar의 크기를 255로 설정하였고 저장된 값은 ‘admin’ 5글자이면 나머지 250의 크기는 공백으로 처리가 된다. 이 점을 이용하여 ‘admin ‘를 요청하면 mysql은 ‘admin’으로 인식된다.
하지만 admin 필터링을 우회를 못하기 때문에 hehe가 출력되었다.
Try - 3
코드를 다시 보니 admin을 필터링하는 preg_match 함수에서 i 옵션이 없다는 것을 알 수 있었다. 즉, 대문자를 인식을 못한다는 것이다.