SQL Injection
SQL 쿼리에 사용자의 입력 데이터가 삽입되어
사용자가 원하는 쿼리를 실행할 수 있는 취약점
사용 목적과 행위에 따라 다양한 구조가 존재하며 대표적으로 아래와 같이 구분
DDL (Data definition language)
데이터를 정의하기 위한 언어
데이터를 저장하기 위한
스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행
DML (Data manipulation language)
데이터를 조작하기 위한 언어
실제 데이터베이스 내에 존재하는 데이터에 대해
조회/저장/수정/삭제 등의 행위를 수행
DCL (Data control language)
데이터베이스의 접근 권한 등의 설정을 하기 위한 언어
데이터베이스내에 사용자의 사용 권한을 부여하기 위한
GRANT와 권한을 박탈하는 REVOKE 등
mysql 기본 데이터베이스 이름, 테이블 이름, 컬럼명 알아내기
방어 기법
ORM과 같이 검증된 SQL 라이브러리를 사용하는 것
ORM이란 Object Relational Mapper의 약자로써
SQL의 쿼리 작성을 편리하게 돕기위한 라이브러리
사용자의 입력 값을 라이브러리 단에서 알아서 escape 하고
쿼리에 매핑시키기 때문에 안전하게 SQL 쿼리를 사용
다양한 SQL injection 우회 기법
https://www.hackerschool.org/Sub_Html/HS_Posting/?uid=43
PHP addslashes(), magic_quotes_gpc 우회
MySQL에서 'a' = 'a '가 true로 평가된다?
https://woowabros.github.io/study/2018/02/26/mysql-char-comparison.html
'공격기법 > Web' 카테고리의 다른 글
XSS와 CSRF의 차이 (0) | 2020.03.08 |
---|---|
브루트 포스 공격 (0) | 2020.01.28 |
CSRF(Cross Site Request Forgery) (0) | 2019.11.15 |
XSS(Cross Site Scripting)과 Cheat Sheet (0) | 2019.10.25 |
URL 점핑(Jumping) (0) | 2019.05.24 |