ac9uaintance5
웹해킹 & 시큐어 코딩 DAY3 본문
섹션 2. SQL Injection
1. SQL Injection 이란 무엇인가?
SQL : 구조화된 질의 언어
Injection : 주입
=> 구조화된 질의 언어를 주입하는 공격
2. 취약점 발생 원인
데이터 베이스는 변조된 SQL 질의가 신뢰하기 때문에 반환이 되고, 결과를 구성한 뒤 공격자에게 반환된다.
세션이나 쿠키가 있을 수도 있음.
=> 전체적으로 악의적인 행동
입력값 검증 미흡으로 인해 발생
미완성된 SQL 구문과 사용자 입력값이 합쳐져 입력 값 검증 없이 구문이 조합되어 입력값 검증 미흡으로 인해 취약점 발생 !
실습2-1 취약점 유/무 판별 방법
일단 나의 admin 계정으로 로그인
게시글 아무거나 작성
왼쪽은 idex=2 이고 오른쪽은 idex=2-1 을 한 것이다. 차례로 하나는 test2, 하나는 test1
위에서 산술연산을 한 것이다. -> 취약점 판별
(1) 사용자 입력(파라미터) - 숫자형
산술 연산자를 통해 취약점 판별 가능
$query = "select * from board where idx={$idx}";
이 상태로
select * from board where idx=4-3 로 질의가 된다.
이 방법이 빠르게 취약점을 판별할 수 있는 방법 중 하나.
case 구문 사용하는 방법도 있다.
참이면 첫번째, 거짓이면 두번 째
(2) 사용자 입력(파라미터) - 문자형
연결 연산자 !!!
-> mysql 문제
mysql에서 공백을 하면 검색이 가능함.
test%' and '%'='
이렇게 해도 검색 가능
like 연산자는 test%' 까지 본다(?) -> 이부분은 이해가 안됨
test%' and '1'='1
이렇게 하면 검색이 안됨
이게 진단자가 하는 실수라는데,, 뭐가 몬지 일단 넘어가자
'Study > Web' 카테고리의 다른 글
웹해킹 & 시큐어 코딩 DAY2 (0) | 2023.03.14 |
---|---|
웹해킹 & 시큐어 코딩 DAY1 (0) | 2023.03.12 |
반드시 알고 넘어가야 할 웹 기술 기초편 - 3 (0) | 2023.01.24 |
반드시 알고 넘어가야 할 웹 기술 기초편 - 2 (0) | 2023.01.23 |
반드시 알고 넘어가야 할 웹 기술 기초편 - 1 (0) | 2023.01.22 |