회원가입

로그인

아이디
비밀번호
ID/PW 찾기
아직 회원이 아니신가요? 회원가입 하기

SQL 인젝션

Profile
:맥노턴

웹페이지에서 암호와 아이디를 묻고 로그인을 하게 된다.

아이디와 암호를 몰라도 로그인 할 수 있다면 어떨까?

인증에 대해 허술하게 관리한 페이지를 오픈하는 방법 중에

SQL 인젝션이라는 것이 있다.

PHP를 예로 들어본다.

보안에 문외한 사이트 개발자는 아이디와 암호를 이렇게 받을 것이다...

<login.html>

form method=POST action=login.php
input type=text name=id
input type=password name=pw

<login.php>

SQL_Query = "
SELECT count(*)
FROM members
WHERE userid LIKE '$id' AND userpass LIKE '$pw'
";

결과값 = 참(1) 로그인 성공 ---> 쿠키생성
결과값 = 거짓(0) 로그인 실패 ---> 다시 login.html 호출

 

평범한 알고리즘에 무슨 문제가 있겠냐 싶지만...

SQL Injection 은 저 쿼리 생성시의 문제를 이용한 것이다.

id, password 를 다음과 같이 입력했다고 가정하자.

#1. 정상적인 액세스

id= admin
pw= qwerty

SELECT count(*)
FROM members
WHERE userid LIKE 'admin' AND userpass LIKE 'qwerty'

 

#2. SQL 인젝션

id= ' OR '1
pw= '

SELECT count(*)
FROM members
WHERE userid LIKE '' OR '1' AND userpass LIKE '''

과 같이 SQL 문이 변경되어 버린다.

참을 돌려주므로 로그인은 무사통과가 되는 셈...

 

단, SQL인젝션은 하나의 정해진 공식이 없다.
이래도 되고, 저래도 안되는 경우가 있다.

''' 를 통과 시키지 못하는 DBMS가 있을 수도 있으므로...

머리속으로 SQL 쿼리를 그리면서 시도해야 한다.

Profile
:맥노턴
레벨 30
569299/686490
81%
McNorton & Education Lab.
Director
댓글
0
댓글 쓰기
권한이 없습니다.

로그인

아이디
비밀번호
ID/PW 찾기
아직 회원이 아니신가요? 회원가입 하기