SQL Injection 종류에 대해서 먼저 알아봅시다.
----------------------------------------------------------------------
1) 논리적 에러를 이용하는 SQL Injection
-> 논리적 에러를 통해 시스템 권한 체크를 우회하는 기법
예)
select * from user_data where last_name = 'your name' or '1=1'
-------------------------------------------------------------------------
2) 쿼리 가능 여부를 이용하는 Blind SQL Injection
-> 악의적인 문자열 삽입 대신 쿼리 결과에 따라 정보를 취득하는 기법
예1)
http://www.xxx.com/page.php?id=5 and 1=1
-> id=5(참) and 1=1(참) 이기 때문에 page.php?id=5 페이지가 보임
예2)
http://www.xxx.com/page.php?id=5 and 1=2
-> id=5(참) and 1=2(거짓) 이기 때문에 쿼리가 실행 안되므로 아무런 결과가 없어야 한다
----------------------------------------------------------------------------
3) 두 개 이상의 쿼리를 이용하는 Union SQL Injection
-> UNION은 2개 이상의 쿼리를 요청하여 결과를 얻는 SQL 연산자이다.
공격자는 이를 악용하여 추가 쿼리를 삽입하여 정보를 얻어내는 방식
예)
http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables
-> information_schema.tables 에서 테이블 정보를 요청하여 정보를 얻으려는 시도.
-----------------------------------------------------------------------------
4) 저장 프로시저를 이용하는 Stored Procedure SQL Injection
-> 저장 프로시저는 운영상 편이를 위해 만들어둔 SQL 모음집.
특히 MSSQL에서 사용하는 xp_cmdshell은 윈도우 명령어를 실행하도록 역할을 제공
예)
http://www.site.com/member/checkid.asp?id=';CREAT.....r.dbo.xp_cmdshell%20'netstat%20-an';