인프런 커뮤니티 질문&답변
산술연산자로 취약점 판별하는 방법..
작성
·
320
퀴즈
SQL Injection이란 무엇인가요?
SQL 언어 자체를 변조하여 데이터베이스 기능을 마비시키는 행위
사용자 입력란에 악의적인 SQL 구문을 삽입하여 비정상적인 데이터베이스 쿼리를 실행시키는 취약점
데이터베이스 관리 시스템(DBMS)에 직접 침투하여 데이터를 탈취하는 해킹 기법
웹 애플리케이션 개발 도구를 사용하여 SQL 쿼리를 최적화하는 기술
답변 1
0
안녕하세요.
예를들어,
boardView.do?idx=100
이런 요청에서 아래의 요청을 전송합니다.
boardView.do?idx=101-1
만약 100 게시글이 출력된다면, 101-1 에 대한 연산 처리가 이뤄졌다고 볼 수 있습니다.
그러면 이에 대한 연산 처리가 어디에서 될까요?
어플리케이션에서는 연산 처리가 되지 않습니다. 사용자 입력 값에 대해선 기본적으로 문자형으로 전달 받기 때문입니다. 입력 값은 그대로 DBMS로 전달되어 DBMS에서 입력 값에 대한 연산처리가 이뤄집니다.
때문에 연산처리가 이뤄졌을 경우 취약하다고 판단할 수 있습니다.
>> 이에 대한 부분은 [모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1] >> 취약점 분석 방법론(3)에서 자세히 다룹니다.
case when 또한 같은 이유입니다.
case when은 조건문인데, 참일 경우 100, 거짓일 경우 102 인데, 조건문 참 거짓에 따라 100 혹은 102 게시글이 보일 경우 case when에 대한 것은 dbms에서 해석이 되기 때문에 취약하다고 판단할 수 있습니다.




