프로그래밍/MySQL

sql injection =, like 필터링

2017. 3. 26. 15:09

IN 연산자

- H3X0R, s1ipper 팀 소속 ch4n3 -


SQL Injection 문제에서 = (또는 다른 비교 연산자들)이 막혔거나, 'LIKE' 비교 연산자가 막혔다면, 우리는 IN 연산자를 사용할 수 있다. 


다음과 같은 쿼리를 보자. 

select * from table 

where id = 'admin' or id='guest' or id='gremlin';

이 쿼리는 DB의 id값이 admin, guest, gremlin 이라는 값이면 table에서 불러오는 쿼리다.


이 쿼리는 충분히 줄일 수 있다. 이 때 사용하는 연산자가 바로 IN 이다. 

select * from table where id in ('admin', 'guest', 'gremlin');

이렇게 IN 연산자를 사용할 수 있다. 


만약 SQL Injection 문제에서 =, like 비교 연산자가 필터링되어 있다면, in 연산자를 사용하는 것이 가능하다. 


//만약 in 연산자도 필터링 되어있으면, < > 이 두 개를 사용해서 비교해도 된다.