[DB] SQL Injection

찬들이·2022년 10월 3일
0

컴퓨터공학

목록 보기
29/34

SQL Injection

SQL Injection이란 악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위이다.

논리적 에러를 이용한 SQL Injection

가장 많이 쓰이고 대중적인 공격 방법으로 사용된며, 논리식을 이용한 Injection이다.

  • 위의 사진에서 보이는 쿼리문에서 where 절에 OR 1=1 이라는 구문을 이용해 where문을 참으로 만들고, --를 넣어줌으로 뒤의 구문을 모두 주석처리하는 방법

  • 위와 같이 행동할 시, 가장 먼저 만들어진 계정으로 로그인에 성공하게 된다.(주로 관리자 계정)

    Union 명령어를 이용한 SQL Injection

    Union 명령어를 통해 사용자의 개인정보와 게시글을 함께 보여주는 SQL Injection


  • 위의 사진에서 보이는 쿼리문에서 Input에 UNION 명령어를 통해 알아내는 방식을 사용한다.

  • 위와 같이 행동할 시, 유저의 개인 정보를 빼낼 수 있다.

    Blind SQL Injection

    Boolean based SQL Injection이라고도 불리고, 데이터베이스로부터 특정한 값이나 데이터를 전달받지 않고, 단순히 참과 거짓의 정보만 알 수 있을 때 사용한다.


  • abc123’ and ASCII(SUBSTR(SELECT name From information_schema.tables WHERE table_type=’base table’ limit 0,1)1,1)) > 100 -- 이라는 구문을 주입한다.

  • 해당 구문을 통해 단기간 내에 테이블 명을 알아 낼 수 있다.

profile
Junior-Backend-Developer

0개의 댓글