1.SQL은 대소문자를 구별하지못한다 EX)SeleCT=SELECT
2.악성키워드가 들어오면 공백으로 치환하는 경우도 있다 EX)UNunionION 에서 union이 공백으로 처리되어
UNION으로 완성된다
3.문자열 우회 EX) reverse('nimda') 또는 concat('adm','in') 또는 문자열을 16진수로 표현하여 x'61646d696e'
또는 0x61646d696e 로 admin을 표현할수있다
4.연산자 우회 EX) and를 &&로 or을 ||으로 우회할수있다 이외에도 다른연산자들을 우회할수있다
5.공백 우회 EX) SELECT/**/'abc';=SELECT 'abc';와 같다 그리고 (')을 사용하면 공백처리를 할수있다
6.mysql에서만 가능한 문자열우회 EX) select mid(@@version,12,1); 만약 버전이 8.0.23-something 인경우
12번째 문자인 t를 반환한
7.탭인코딩을 통한 공백우회 EX) selec%091;은 select 1;과 같다
8.mysql에서만 가능한 주석구문으로 우회 EX)select 1 /*!union*/ select 2; 는 select union select 2;랑 같
9.postgresql에서만 가능한 문자열우회 EX) select chr(65);는 select 'A'와 같다 또한 select concat(chr(65),chr(66));은
select AB와 같다
10.postgressql에서만 가능한 우회 EX) select substring(version(),23,1); 는 서버버전에 23번째 문자를 반환한다는뜻이다
11.MSSQL에서만 가능한 문자열 우회 EX) select char(0x61); 는 select a와 같다 그리고 select concat(char(0x61), char(0x62)); 는 select 'ab';와 같
12.MSSQL에서만 가능한 문자열 우회2 EX) select substring(@@version,134,1); 는 버전의 134번째 문자를 반환하여 select한다는 뜻이다
13.SQLite에서만 가능한 문자열 우회 EX)select char(0x61); 는 select 'a'와 같다 그리고 select char(0x61)||char(0x62);는
select 'ab';와 같다
14.SQLite에서만 가능한 select우회 EX)select 1을 values(1)로 우회할수있다
15.like 연산자와 %연산자를 사용하자 EX) select uid from users where uid="admin" and upw like "pw%" 는
upw에 pw~~포함한 값이 있을때 true를 출력한다
16.regexp 연산자와 *연산자를 사용하자 EX) select uid from users where uid="uid=admin" and upw regexp 'pw.*' 는
upw에 pw라는값이있으면 반환한다는뜻이다