웹 점검을 하다 보면, 웹 방화벽 혹은 소스상에서 특정 키워드를 필터링 하는 경우를 볼 수 있다. 


이러한 경우 우회를 하기 위해선 먼저 어떤 문자열들이 필터링 당하는지 확인을 할 필요가 있다.


중요한 것은 먼저 필터링을 "발견" 하는 것이다. 필터링이 적용된 페이지 혹은 사이트의 경우


반응은 여러가지이다. 특정 문자열이 포함될 시 웹사이트의 반응은 아래와 같이 여러가지일 수 있다.



1) 500 에러 발생

2) 200 이지만 에러 페이지로 리다이렉트

3) 그냥 치환

4) 에러 메시지를 통한 자세한 정보 노출

5) 기타.. 



가장 편한 경우는 4) 의 경우이고, 다른 몇가지 경우에도 간단히 필터링되는 문자열을 찾아낼 수 있다.


1) 정상적인 페이지

 view.jsp?no=1155 


2) ' 가 필터링 되지 않아 아래의 경우에도 위와 동일한 응답

 view.jsp?no=11'55

 

3) " 는 필터링 되어 오류 메시지

 view.jsp?no=1155


위와 같은 방식으로 여러가지 특수문자들을 대입해 보면 필터링 당하는 문자열들을 발견할 수 있다.


필터링 당하는 문자열을 파악하고 나면, 공격 페이로드를 구성한 뒤 필터링 당하는 문자열들을 다른 문자열 혹은


함수를 이용하여 우회한다.


1. SQL Injection 

  1) 키워드 필터링 시

   - select, union 등 키워드 우회

      -> SeLEct

      -> s%E%l%e%c%T

      -> selselectect


   - or, and, = 등 필터링 시

      -> ^, |, & 사용

      -> like, between 사용


   - ' 필터링 시 문자열 조립

      -> char(0x41) + char(0x48) 

    

   - 공백 필터링

      -> /**/, %20, %2b, + , %09 등


                                                         ...(작성중)...

+ Recent posts