Web hacking/기법

SQL injection_(2) WHERE문 우회

jin_li 2023. 4. 18. 01:55

※ "화이트 해커를 위한 웹 해킹의 기술" 강의 및 책에 수록된 실습이다.
※ 허가 받지 않은 웹사이트에 해킹을 시도 하는 것은 불법.
※ dvwa 등 테스트 가능하게 만들어진 곳에서만 모의해킹을 해야한다.
 
 
 
 
 
security level을 low로 한 뒤, SQL injection 탭으로 가서 ID 입력하는 곳에 1을 입력해봤다.
 

 
ID가 1인 계정의 이름이 나온다.
 
 
 
 
 
SQL 인젝션 공격에 취약한지 알아보는 가장 기본적인 방법은 '(작은따옴표)를 넣어보는 것이다.
작은따옴표를 입력했을 때, 취약한 페이지는 아래와 같이 SQL 에러가 뜬다.
 

 
 
다시 SQL 인젝션 페이지로 돌아가서 소스코드를 보면,
 

 
$query 변수 설정에서, $id가 이미 작은따옴표들로 감싸져있다.
따라서 아까와 같이 작은 따옴표를 입력했을 때, 쿼리문에는 작은 따옴표가 세 개가 되어 오류가 생긴 것이다.
 
이와 같이 독특한 기호와 같은 것들을 입력했을 때 sql 에러가 생기면,
입력값에 따라 sql 쿼리문이 바뀐다는 뜻이니 sql 인젝션 공격이 가능해진다.
 
 
 
 
 
이번에는 1' or '1'='1 을 입력해보자.
 

 
1=1은 항상 참이니 ID가 1인 계정 외에도 모든 계정 정보가 출력되었다.
 
 
 
 
 
'# 을 입력해보면,
 

 
아무것도 안 뜬다. id 값에 " 이 입력되고 뒤에는 전부 주석이 될 것이기 때문이다.
(참고! MySQL에서는 #이 주석기호지만, -- 을 주석기호로 쓰는 데이터베이스도 있다..오라클!)
 
 

'Web hacking > 기법' 카테고리의 다른 글

SQL injection_(4) Blind SQLi / medium, high 단계 및 대응  (0) 2023.04.18
SQL injection_(3) column 개수 알아내기, UNION 공격  (0) 2023.04.18
SQL injection_(1) 공격 개요  (0) 2023.04.18
파일 인클루전  (0) 2023.04.03
CSRF(2)  (0) 2023.03.23