SQL Injection (SQLI) 공격 방식

2025. 5. 10. 21:50·모의해킹

📖이론

1. Classic SQL Injection

사용자 입력값을 그대로 SQL 쿼리에 삽입하여 공격하는 방식

 

ex )

SELECT * FROM USER WHERE USERNAME = '[입력값]' AND PASSWORD = '[입력값]';

 

여기서 사용자가 admin'; -- 라는 값을 입력하면

SELECT * FROM USER WHERE USERNAME = 'admin'; --' AND PASSWORD = '[입력값'];

 

-- 뒤는 주석처리됨


2. Blind SQL Injection

참 / 거짓의 결과를 통해 정보를 추출하는 방식

 

ex1 ) Boolean-based : SQL 쿼리의 결과가 참이면 정상적인 응답을, 거짓이면 에러를 반환하는 경우를 이용

(사용자 이름을 검증하는 쿼리에서 'or 1=1' 또는'or 1=2'와 같은 조건을 추가하여 참 / 거짓 판별)

 

ex2 ) Time-based : 응답지연을 유발시키는 함수를 사용하여 참 / 거짓 판별 (SLEEP 또는 BENCHMARK 함수를 이용)


3. UNION-based SQL Injection

UNION 연산자를 사용하여 원래의 쿼리 결과에 추가적인 선택 결과를 결합하는 방식

발생조건 : UNION 연산자는 2개 이상의 SELECT문을 합집합하는 연산자이므로,

UNION 연산자로 결합된 쿼리의 대상 목록은 같은 개수의 파라미터를 가져야 한다.

 

ex ) 원래 쿼리에 UNION SELECT NULL, userID, password FROM user; 를 추가하여 사용자 정보를 반환하는 쿼리 생성


4. Error-based SQL Injection

반환된 에러메세지를 통해 데이터베이스의 정보를 추출하는 방식

 

ex) CAST 함수와 같은 함수를 사용하여 강제적으로 에러를 발생시키고, 해당 에러메세지에서 DB 정보를 추출


🖥️실습

1)

DB 조회 전에 loginAction 페이지에서 존재여부를 먼저 확인해서 SQL 삽입되기 전에 아예 차단해버림


2)

? 왜 됐지

preparedStatement를 쓰면 문자열로 들어가기때문에 SQL Injection을 방지할수 있다고함... ㅇㅅㅇ


3)

뷰페이지에서 URL에 임의의 SQL 쿼리를 삽입하여 DB 에러페이지가 반환되는지 확인! (error-based injection)

bbsID 파라미터는 정수여야 되는데 왜 문자가 들어갔냬

정수만 허용되기 때문에 SQL injection이 차단됨

공백 넣어봐도 똑같고

* 공백 문자 우회 방법

- %0a / %09 / %0d / %20 / + / ()괄호 등 ...

 

싱글쿼터(%27) 써도 똑같고

 

 

싱글쿼터 앞에는 백슬래시(%5C) 써야된다 해서 써봐도 똑같고

 

 

주석 처리를 다르게 해봐도 똑같음 ㅠㅡㅠ

 

그러면 에러창에 나온것처럼 Integer.parseInt('입력값'); 을 이용해보면 어떨까!!!!!!

 

Integer.parseInt('입력값'); 
-> 입력값에 1') or Integer.parseInt('49') ; # 이런식으루 넣으면

Integer.parseInt('1') or Integer.parseInt('49'); #'); 
이렇게 되는거 아닌가!?

 

근데 내가 문법을 잘 몰라서 이러케 쓰는게 맞는지 몰겟ㅇ음

졸립다

 

 

 

 

 

 

 

출처 : https://velog.io/@k4minseung/DB-SQL-Injection-%EA%B3%B5%EA%B2%A9%EA%B3%BC-%EB%B0%A9%EC%96%B4-%EB%B0%A9%EB%B2%95

'모의해킹' 카테고리의 다른 글

SQL Injection (Get/Search)  (0) 2025.07.04
XSS - reflected (GET)  (1) 2025.06.15
bwapp 설치하기  (0) 2025.05.17
XSS 2  (0) 2025.05.06
XSS  (0) 2025.05.04
'모의해킹' 카테고리의 다른 글
  • XSS - reflected (GET)
  • bwapp 설치하기
  • XSS 2
  • XSS
songtoy
songtoy
  • songtoy
    ㅎㅇ
    songtoy
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 모의해킹
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
songtoy
SQL Injection (SQLI) 공격 방식
상단으로

티스토리툴바