Error based SQL injection
Error based SQL injection은 일부러 SQL의 잘못된 문법이나 자료형 불일치 등에 의해 데이터베이스가 알려주는 데이터베이스 오류 메시지에 의존하여 수행되는 공격 기법이다.
사진으로 보면 다음과 같다.
Union based SQL injection
Union based SQL injection은 기존 정상 쿼리와 악성쿼리를 합집하으로 출력해서 정보를 흭득하는 공격기법이다.
게시물 검색창을 예시로 들자면, 해당 게시물의 정보쿼리를 담고 있는것을 일치시킨 뒤, 각 정보가 담당하는 것을 이해한뒤, 그 해당되는 무언가를 넣는 방식의 공격이다.
다음 사진은 제작자가 직접 실습했던 모습의 사진이다.
Blind Time based SQL injection
blind Time based SQL injection은 위의 공격과 달리 참과 거짓만을 판별할 수 있을때 쓸 수 있는 공격 기법이며, 이 공격은 시간 지연으로 공격이 통하는지, 안 통하는지를 확인하는 공격이다.
blind boolean SQL injection
blind boolean SQL injection은 3번째에서 말한 Time based와 개념은 같지만 이번에는 참 거짓으로 결과물을 볼 수 있을때 쓰이는 공격기법이다.
다음 사진또한 제작자가 직접 실습했던 모습의 사진이다.
위와같이 싱글 쿼터로 원래 쿼리문을 빠져나온 뒤, 특정 쿼리문을 통해 데이터베이스의 이름의 첫글짜가 Y보다 뒤면 참으로 나오고, 아니면 안나오는 방식으로 공격한다.
SQL injection의 위험성.
- 이 공격법은 예전부터 꾸준하게 1순위 위협으로 지정되었고, 그는 OWASP TOP 1위인것을 보면 알 수 있다.
- 이 공격은 XSS와 다르게 데이터베이스 자체에 엄청난 타격을 줄 수 있다.
-> 회원 정보를 수정하거나 탈취, 삭제 할 수 있으며,
이 공격법이 유행하지 않았던 옛날은 로그인할때도 'or 1=1;--과 같이 비밀번호에 넣으면 아이디만 안다면 바로 로그인되는 엄청난 공격법이었다.