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

-> UNION2개 이상의 쿼리를 요청하여 결과를 얻는 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';


Posted by MUSH1