SQL Injection 기초
- SQL에서 대소문자는 구분하지 않는다.
- length(pw)=8은 pw의 길이가 8인지 확인하는 구문이다.
- str_replace(“admin”,’’,
)은 something부분에서 admin이 있다면 공백으로 바꾸고 남은 을 표현하는 것이다. - 문자열을 ASCII로 바꾸는 함수는 ascii(str)이다.
- ‘과 “은 동일하다.
- where 구문 뒤에 여러가지 조건이 오지만 중간에 정보들은 뒤에 정보에 의해 덮어씌어질 수 있다.
- LIKE ‘’ 구문 안에는 %가 들어갈 수 있다. %는 wilde card 느낌이다. %영 이라고 하면 영으로 끝나는 것을 찾고 김%이라면 김으로 시작하는 것을 찾고 김%수 라면 김x수에 해당하는 모든 것을 찾는다.
- LIKE 안에 _는 한글자를 의미한다.
- [a-e]%는 a부터 e사이의 알파벳중 하나로 시작하는 모든 것을 의미한다. []안에 !(NOT)을 포함 시킬 수 있다.
=과 동일한 기능
like
: id like ‘admin’in
: id in (‘admin’) # in 뒤에는 여러개의 value가 ,로 이어져서 올 수 있다.
주석처리
#
==%23
--
/* */
스페이스
SP
==%20
\t
==%09
\n
==%0a
# Line FeedVT
==%0b
# 6줄 스페이스를 의미FF
==%0c
# 프린트에 이 문자를 보내면 종이를 그냥 내보낸다. (Form Feed)\r
==%0d
# Carriage Return
논리 연산자
and
==&&
==%26%26
or
==||
==%7c%7c
문자열 자르기
substr()
==substring()
==mid()
- substr(pw,2,1)=’1’은 pw 두번째부터 1개의 문자로 짜른것을 의미하기에 즉 두번째 pw 문자가 1인지 확인하는 구문이다.
URL encoding에 관련하여서
ASCII CODE
했던 공격 예시
- username=sadcowboy&password=’ +OR ‘1’=’1
- name=’ OR ‘1’=’1&password=’ OR ‘2’>’1
- => SELECT * FROM users WHERE login = ‘’ OR ‘1’=’1’ AND password =’’ OR ‘2’>’1’ LIMIT 1
- 위의 경우에 데이터 베이스에 있는 첫 번째 유저로 로그인이 가능하게 될 것이다.
This post is licensed under CC BY 4.0 by the author.