SQL인젝션은 웹 공격 중에 가장 잘 알려져 있는 공격으로
가장 심각한 리스크의 공격으로 선정된 인젝션 리스크의 대표적인 공격이다.
SQL인젝션 : 공격자가 데이터베이스에 전송되는 SQL쿼리문을 조작하여
데이터를 변조하거나 허가되지 않은 정보에 접근.
# WHERE 구문 우회
- WHERE구문 : WHERE 이하의 구문을 만족하면 쿼리문을 실행한다.
ex)
SELECT first_name, last_name FROM users WHERE ID='1'
//id=1 이 참이면 first_name과 last_name의 목록을 가져와라.
이런 WHERE문의 성격을 이용하여 정보를 캐낸다.
- WHERE 구문 우회 : WHERE의 조건이 항상 참이 되도록 퀴리를 조작하여 무조건 정보를 출력하도록 한다.
입력값 : 1' or '1'='1
//ex) WHERE 구문 우회
SELECT first_name, last_name FROM users WHERE ID='1' or '1'='1'
//'1'='1'이 항상 만족하므로 정보를 출력한다.
이때 쿼리문은 입력값에 자동으로 ' '를 씌우므로
공격자는 입력을 1' or '1'='1 을 입력하여
' '로 인한 에러가 나지 않도록 한다.
# UNION 공격
- UNION : 합집합으로 만약 구문1 UNION 구문2 이면 구문1의 실행결과와 구문2의 실행결과가 모두 출력된다.
입력값 : 1' UNION SELECT first_name, last_name FROM users#
//ex) UNION 구문 우회
SELECT first_name, last_name FROM users WHERE ID='1' UNION SELECT first_name, last_name FROM users#'
UNION을 경계로 구문이 2개 존재한다.
따라서 앞의 구문이 WHERE을 만족하지 못하여 정보가 출력되지 않는다 하더라도
뒤의 구문은 조건이 없기 때문에 뒤의 구문에서 원하는 정보를 출력한다.
마지막의 #는 자바나 C등에서 주석처리할 때 쓰는 // 와 같은 역할을 하므로
입력값의 마지막에 자동으로 붙는 ' 를 주석처리하여
에러가 발생하지 않도록 한다.
# 실습 #
to be continue...............
오늘 밤(12:00) 안에 올라옴......
실습 정리는 내일 8pm전까지 편집됩니다...
'about Security > 웹보안과 해킹' 카테고리의 다른 글
[웹해킹] # sqlmap 자동화 공격 (0) | 2020.10.03 |
---|---|
[웹해킹] # 블라인드 SQL 인젝션_level.low (0) | 2020.10.03 |
[웹해킹문제풀이] # webhacking.kr 워게임 26번 (0) | 2020.10.02 |
[웹해킹문제풀이] # webhacking.kr 워게임 4번 (0) | 2020.10.02 |
# 칼리리눅스 갑자기 안열림 + 칼리리눅스 2020 로그인 + 인터넷 연결 (0) | 2020.09.27 |
댓글