ye._.veloper

[ D B ] SQL Injection 본문

D B

[ D B ] SQL Injection

ye._.veloper 2023. 1. 24. 23:22

☁ SQL Injection (SQL 인젝션, SQL 주입)

 

 

 

SQL Injection Example

- 사용자가 ID와 PASSWORD를 입력하는 상황일 경우 Mabatis에 다음과 같이 쿼리가 있다고 할때,

" select * from  tblUserInfo where userid = '${userid}' and userpw = '${userpw}' "

악의적인 유저(아이디 비밀번호를 모르는)가 비밀번호를 [password' OR 1=1 limit 1--] 라고 입력하게 되는 경우 단, 비밀번호는 암호화처리가 되어있지 않다고 가정!

 

" select * from tblUserInfo where userid = 'admin' and userpw = 'password' OR 1=1 limit 1-- ' "

쿼리 결과는 올바르지 못한 결과로 작동하게 된다. 

싱글쿼테이션(')으로 감싸도 끝에 있는 싱글쿼테이션 1개가 -- 주석처리되고 1=1이라는 조건이 absolutely true로 만들기 때문에 홈페이지에 작성된 쿼리에 따라 sql Injection으로 충분히 해킹이 가능할 수 있다.

 

 

 

 

Ref.

Spring mybatis에서 #{ }문법과 ${ }문법의 차이점(feat. SQL Injection)

https://ko.wikipedia.org/wiki/SQL_%EC%82%BD%EC%9E%85

 

Comments