

기사 출처 : https://m.boannews.com/html/detail.html?idx=132447
SQL 인젝션 공격은 SQL 삽입 공격 또는 SQL 주입 공격 이라고도 하는데 공격자가 웹 애플리케이션의 보안 취약점을 이용해 데이터베이스 쿼리를 조작하거나 악의적인 쿼리를 삽입하여 민감한 정보를 유출하거나 시스템을 제어하는 공격 기법이다.
주요 공격 방법은
방법: 인증 과정에서 입력 필드에 SQL 구문을 삽입해 인증을 우회.
SELECT * FROM users WHERE username = 'admin' AND password = 'password';
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';
-> 항상 참이므로 인증 우회.
SQL의 주석 기법(-- 또는 #)을 사용해 나머지 쿼리를 무효화.
SELECT * FROM users WHERE username = '' OR '1'='1' -- AND password = 'password';
다른 테이블의 데이터를 합쳐서 반환이 목적.
UNION 키워드로 다른 테이블 결과를 가져옴.
' UNION SELECT username, password FROM admin --
SELECT username, password FROM users WHERE id = '' UNION SELECT username, password FROM admin --;
쿼리 결과가 직접 출력되지 않는 경우 참/거짓을 이용해 정보를 추론.
오류 메시지를 이용해 데이터베이스 정보를 추출.
데이터베이스의 저장된 프로시저를 호출해 공격 수행.
'; DROP TABLE users --
데이터 유무를 시간 지연으로 확인.
참고 기사
https://m.boannews.com/html/detail.html?mtype=3&tab_type=H&idx=128286