• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

산술연산자로 취약점 판별하는 방법..

21.11.06 20:02 작성 조회수 173

1

강의 잘 듣고 있습니다 강사님!

인젝션 취약점 존재여부 확인방법 보는중 한가지 문의가 있습니다. 숫자형일때 산술연산이 가능한지 보는것과, case when 구문이 가능한 경우 이게 왜 injection 에 취약한건지요?

test 검색어를 te' 'st 로 검색했을때도 값이 정상적으로 나오는건 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에서 해석이 되기 때문에 취약하다고 판단할 수 있습니다.