Security

SQL Injection

gukbap 2014. 6. 6. 20:45
반응형

1998년 이후 OWASP TOP 10에 언제나 속한 공격 기법.

http://ko.wikipedia.org/wiki/OWASP 

80번 포트만을 이용한 웹해킹 기법.


보통의 해킹기법들은 서버사이드 언어가 작동하는 서버나 데이터를 받는 클라이언트를 공격한다. 하지만 이는 관리자의 수준에 따라 방어가 가능하다. 하지만 SQL Injection은 DB를 공격하는 기법으로서 서버사이드 언어와 구분된 DB가 SQL Injection을 방어하는 것이 어렵운 점을 이용한 것이다. 이를 위해서 관리자는 서버사이드 수준에서 SQL Injectino을 방어해줘야한다.


쿼리(Query)

질의어라고 표현되며 DBSM에 보내는 요청을 뜻한다.


쿼리 구문 중

$login = "select * from user where id = '.$userid.' and password = '.$userpassword.'";

과 같은 구문이 있다.  사용자가 userid와 userpassword에 해당하는 로그인 폼에 아이디와 비밀번호를 입력하면 두가지 입력값이 동시에 일치하는 레코드를 사용자 테이블에서 찾아서 결과로 리턴하게 된다.

이 때 사용자가 입력한 값은 .$userid.와 .$userpassword. 부분에 그대로 치환되어 들어가게 된다. 공격자는 이 점을 이용하는 것이다.


아이디는 일반적인 것을 입력한 후에 패스워드를 

10000' or '1=1 

라고 입력해보자. 이 때의 구문은

$login = "select * from user where id = 'iidd' and password = '10000' or 1=1";

가 된다. id는 iidd인 것을 테이블에서 찾고 password를 검사할 때 or 구문에서 1=1이 언제나 참이므로 where는 참인 식으로 바뀌면서 iidd의 비밀번호를 모르는 채로 로그인이 된다.



http://hackerschool.org/Sub_Html/HS_Posting/?uid=42

http://dev.wo.tc/blog/45

http://lanian.tistory.com/132


반응형

'Security' 카테고리의 다른 글

공부할 것들  (0) 2015.11.19
level1 **  (0) 2011.09.02
BOF 기초 **  (0) 2011.08.30
port 80(http) 공격 **  (0) 2011.08.19
hackerschool level7  (0) 2011.07.14