SQL Injection 관련 문제 풀이를 하기 전,
SQL Injection에 관한 개념을 먼저 알아보기로 했다.
SQL Injection이란 말 그대로 SQL 삽입.
즉 코드 인젝션의 한 기법으로 클라이언트의 입력 값을 조작하여
서버의 데이터베이스를 공격할 수 있는 공격 방식을 말한다.
주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑하지 못했을 경우에 발생한다.
공격이 쉬운데 비해 파괴력이 어마어마하기 때문에
시큐어 코딩을 하는 개발자라면 가장 먼저 배우게 되는 내용이다.
로그인 폼에 아이디와 비밀번호를 입력하면
입력한 값이 서버로 넘억가고,
데이터베이스를 조회하여 정보가 있다면 로그인에 성공하게 된다.
이 때 데이터베이스 값을 조회하기 위해 사용되는 언어를 SQL이라고 하며,
다음과 같이 생겼다고 가정하자.
SELECT user FROM user_table WHERE id='입력한 아이디' AND password='입력한 비밀번호';
만약 악의적인 유저가 다음과 같이 입력했다면?
SELECT user FROM user_table WHERE id='hi' AND password='' OR '1'='1';
비밀번호 입력과 마지막 구문을 자세히 살펴보자.
따옴표를 올바르게 닫으며 password=''를 만들어버림과 동시에
SQL 구문 뒤에 OR '1'='1'을 붙였다.
WHERE 뒤에 있는 구문을 간단히 축약하면 false AND false OR true = true이 된다.
'Web > LOS' 카테고리의 다른 글
[LOS] 문제 5. wolfman, 스페이스(빈칸) 우회 기법 이용 (0) | 2018.10.26 |
---|---|
[LOS] 문제 4. orc, 함수 이용하여 패스워드 알아내기 (0) | 2018.10.26 |
[LOS] 문제 3. goblin, 따옴표 문자 필터링 우회 (1) | 2018.10.26 |
[LOS] 문제 2. cobolt, 주석 URL 인코딩 (0) | 2018.10.26 |
[LOS] 문제 1. gremlin, URL 인자로 넘겨주는 GET 방식 (0) | 2018.10.26 |