본문 바로가기

2026 - 1

1주차 워게임 [Web 06] 공부

SQL 인젝션 문제라고 하기에 관련 개념 공부를 하기로 했다.

 

SQL 인젝션??

먼저 SQL 인젝션이란, 보안상의 허점을 이용해 악의적인 SQL쿼리 공격문을 삽입하는 공격 유형이다 문제에서는 힌트를 통해 1'or'1'like'1 이라는 쿼리문으로 인증키에 대한 힌트가 있는 사이트로 이동이 가능했다.

 

이런 SQL 인젝션은 쉬운 난이도에 비해 그 피해가 크다는 특징을 가지고 있다. 주요 사례로는 2015년 일어난 온라인 커뮤니티 회사에SQL 인젝션 공격으로 인한 사용자 195만건의 개인정보가 유출된 사건이 있다.

 

사례와 같이 보안이 미흡한 여러 홈폐이지 같은 경우에는 아직 SQL 인젝션 공격이 유효한 경우는 적지 않기에 공격자들이 많이 채택하는 방법이기도 하다. 예로는 OR '1' = '1' 이라는 명령어를 로그인 창에 입력하면 별도의 절차 필요없이 로그인이 되는 예가 있다.

 

어떡하지어떡하지어떡하지 춤출때가 아니지

 

그럼 SQL 인젝션 공격을 막기 위한 예방 조치에는 어떤 것 들이 있을까? 제일 확실하고 안전한 방법으로는 개발단계에서 시큐어 함수를 쓰는 방법이 존재한다. 시큐어 함수는 기존의 쿼리 함수를 고정한 상태에서 데이터를 입력받기 때문에 SQL 인젝션 공격으로인한 쿼리 함수 붕괴 현상을 막을 수 있다.

 

하지만 사용자의 입력값에 따라 SQL쿼리가 동적으로 생성되는 폐이지 같은 경우에는 어떻게 SQL 인젝션을 예방할 수 있을까? 방화벽이나 탐지 시스템을 이용하여 SQL 인젝션 공격의 특징(',/*'- - 등등) 을 실시간으로 잡아내는 것이 동적으로 생성되는 쿼리에 대한 SQL 인젝션 공격 예방방법으로 많이 채택되고 있다.

 

앞서 서론에서 예로 들었던 온라인 커뮤니티 사례도 앞의 두 방법을 적극적으로 사용하지 않아 발생한 것으로 알려지기도 했다.

이러한 예방법들은 개인정보보호법 안전성 확보 조치 기준으로 제시되어 있기도 하다.

https://www.law.go.kr/admRulLsInfoP.do?admRulId=73493&efYd=0

 

행정규칙 > 개인정보의 안전성 확보조치 기준 | 국가법령정보센터

 

www.law.go.kr