티스토리 뷰

올제 TREND/COOLture

SQL Injection 이란?

allje 2012. 11. 16. 11:38

SQL Injection

 

 

 

웹프로그램은 데이터베이스와 연결을 하여 원하는 결과가 나오도록 프로그래밍 하는거... 뭐 대충 이렇다..

그럼... 원하는 결과를 얻어내려면 어떻게 해야 할까?

 

외국에 나가 식당에서 한국말로 주문을 아무리 해도..

외국인이 한국말을 못알아 듣는다면.. 원하는 음식을 얻어먹긴 힘들다..

 

이와 마찬가지로 데이터베이스에게 원하는 결과를 얻어내려면..

데이터베이스가 알아듣는 언어로 대화를 하여야 한다..

그 언어가 SQL 이다...

 

그럼... SQL Injection은 뭘까요... 궁금하면 500원


SQL Injection은 데이터베이스와 통하는 언어인 SQL의 취약점을 파고 들어.. 정상적이지 않은 SQL 언어를 통해

데이터베이스에서 원하는 정보를 알아내는 10대 웹해킹 방법중에 하나이다.

 

음.. 쉽게 설명하자면...

제비족이 어떤 중년의 아줌마에게 접근하여, 그 아줌마의 계좌 비밀번호나, 혼자 사는 아파트 비밀번호 같은 중요한 정보를

알아내고자 할때..

 

"저... 계좌 비밀번호 좀 알려주세요?" 이렇게 물으면 당연히

"앗~ 제비족이다"

"어떻게 알았지"

이렇게 될게 뻔하다...

 

그러나, 술을 먹여서 상태를 안좋게 만들고...

빈틈을 파고 드는 달변의 말솜씨로 현혹시킨다면....

어느 순간 제비족은 그 아줌마의 모든 정보를 알아내게 될것이다.

(비유가 좀 그렇긴 하지만... 해커나 제비족이나.. 다 나쁜 놈들이기에...)

 

그럼 SQL Injection 을 통해 데이터베이스의 정보를 가져오는 방법을 간략하게 설명하겠다.

 

SQL 언어중.. select 란것이 있다.

select 는 특정 데이터베이스의 테이블에서 정보를 가져오라는 명령어다.

 

예를 들어 

select * from 특정테이블 의 의미는  특정테이블 from(~으로 부터) * (모든 것을) select (가져오라)...

즉..특정테이블으로부터 모든것을 가져오라. 이뜻이다...

 

간단하지 않는가... 이것도 어려우면... 그만 읽어라..

위의 SQL 문에 조건을 걸어 원하는 것만 알아내는 것도 가능하다...

 

select * from 특정테이블 where  필드 = '어떤값' and 필드 = '어떤값'

위의 명령어는 where 라는 문을 추가하여 조건을 줘서 값을 가져오는 SQL 문이다. and는 말그대로 '그리고' 란 뜻으로 두개의 조건이 다 충족되는 값을 가져오라는 뜻이다.

 

 

 

중요정보  아이디  비밀번호 

이상한파트

이상한 

 이상한놈

A파트

안병승

 아픈놈

 

자.. 위에 정보가 데이터베이스에 있다.. 저 정보에서 해커가 원하는건 '중요정보' 이다..

저 정보를 얻기 위한 정상적인 SQL은... 아래와 같다.

 

select 중요정보 from 테이블 where 아이디='이상한' and 비밀번호 = '이상한놈  

이런식으로 SQL 명령을 하면 결과값은 '이상한파트' 가 나온다...

 

그런데 해커가.. 아이디는 알고... 비밀번호 정보를 모를때... SQL injection 을 쓰는 방식은 다음과 같다.

 

아이디 적는 공간에는 이상한 을 넣고... 비밀번호 적는 공간에는 ' or '=   값을 넣는다... 그러면.. SQL은 다음과 같이 된다.

 

select 중요정보 from 테이블 where 아이디='이상한' and 비밀번호 = '' or '='

 

위의 SQL의 결과값도... '이상한파트' 가 나온다...

 

이런식으로 SQL에 값을 넘길때 변조된 값을 넘겨서 자신이 원하는 정보를 가져오는것이...

 

 SQL Injection 이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



개발팀
이득수차장
@allje_lds

Tel. 02-514-9900
Fax. 02-514-9902
E.mail
lds@allje.com

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함