SQL 인젝션(SQL Injection)
사용자 입력을 통해 들어오는 데이터를 악의적으로 이용하여 SQL 쿼리를 조작하거나 실행시키는 것
1.Error based SQL Injection
공격자가 데이터베이스로부터 에러 메시지를 이용하여 정보를 추출하는 SQL 인젝션 기법
해당 사이트는 로그인을 실패시 Login failed 라는 에러 메세지를 출력한다.
하지만 아무문자열 뒤에 ' 를 입력하게 되면 다른 에러메세지를 볼수있다.
sql 문을 입력하기 위해 크롬 개발자 도구를 통해 패스워드 최대 글자수를 조작한다.
해당 비밀번호는 다음과 같은 sql 문을 이용해 비밀번호를 식별하고있다.
여기에 비밀번호란에 다음과같은 sql문을 넣는다.
"SELECT * FROM employee WHERE userid = " + userId + " and password = " + password
' OR '1'='1' --
이렇게 되면 뒤에는 주석처리되고 비밀번호가 '' 이거나 1=1 이 만족하면 로그인 된다.
"SELECT * FROM employee WHERE userid = " + userId + " and password = '' OR '1'='1' -- + password
이 방식은 데이터 베이스를 조회할때도 사용하여 모든 사람의 데이터를 얻을수있다.
2.Union based SQL Injection
SQL의 Union문을 사용한 SQL 인젝션 방법이다.
공격자는 Union의 테이블을 합쳐서 조회하는 것을 악용하여 컬럼수와 데이터형을 찾아서 공격한다.
3.Blind SQL Injection
데이터베이스가 반환하는 에러 메시지나 결과를 직접 확인할 수 없는 상황에 사용하는 공격
WHERE절을 통해 Boolean 조건을 추가하여 공격하는 방식이다.
🎈참고자료
https://noirstar.tistory.com/264
https://www.w3schools.com/sql/sql_injection.asp
'Computer Science > 보안' 카테고리의 다른 글
[보안] CSRF(Cross Site Request Forgery) (0) | 2024.06.17 |
---|---|
[보안] XSS(Cross Site Scripting) (0) | 2024.06.16 |
OAuth(Open Authorization) (0) | 2024.05.20 |