SQL Injection

agnusdei·2024년 7월 27일
0

SQL 인젝션 공격에서 사용되는 인코딩 문자들은 데이터베이스 쿼리에서 특수 문자를 회피하거나 조작하는 데 사용됩니다. 아래는 일반적으로 사용되는 인코딩 문자와 그에 매칭되는 문자, 그리고 공격 예시를 정리한 표입니다.

인코딩 문자 매칭 표

인코딩 문자매칭되는 문자
%27' (Single Quote)
%22" (Double Quote)
%3D= (Equal Sign)
%3B; (Semicolon)
%2C, (Comma)
%20(Space)
%2F/ (Slash)
%5C\ (Backslash)

SQL 인젝션 공격 예시

1. 기본 SQL 인젝션

가정: 로그인 폼에서 사용자 이름과 비밀번호를 입력받는 경우

SELECT * FROM users WHERE username = 'admin' AND password = 'password';

악의적인 사용자가 입력 필드에 다음과 같은 값을 입력할 경우:

  • 사용자 이름: admin' --
  • 비밀번호: (비워둠)

결과적으로 쿼리는 다음과 같이 변환됩니다:

SELECT * FROM users WHERE username = 'admin' -- ' AND password = '';

이 쿼리는 실제 비밀번호 확인 없이 admin 사용자에 대한 접근을 허용합니다.

2. URL 인코딩을 이용한 SQL 인젝션

위와 같은 공격을 URL 인코딩을 통해 수행할 수도 있습니다. 예를 들어, HTTP 요청의 URL에서 다음과 같은 형식으로 전달할 수 있습니다.

http://example.com/login?username=admin%27%20--&password=

이 URL에서 %27'로 인코딩된 것입니다. 서버는 이를 해석하여 SQL 쿼리를 실행하게 됩니다.

결론

SQL 인젝션 공격은 입력값을 적절히 검증하지 않아서 발생합니다. 위의 인코딩 문자와 예시를 통해 공격자가 어떻게 입력값을 조작할 수 있는지 이해할 수 있습니다. 이를 방지하기 위해서는 항상 사용자 입력을 검증하고, 파라미터화된 쿼리를 사용하는 것이 중요합니다.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글