sql injection

devguri·2022년 11월 16일
0
post-thumbnail
post-custom-banner

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

low 단계

  • where 구문 우회

→ user ID =1 검색하면 사용자에 대한 정보 출력

→ 이 코드에서 user_id 는 작은 다옴표 안에 있기 때문에 빈칸에 '입력하면 '''로 받아들여져서 오류발생

  • ' 입력해서 오류 발생하면 이 페이지는 sql 쿼리문을 통해 처리되는 것을 알 수 있다.
  • 이렇게 돼면 sql인잭션 공격에 성공할 확률 높아짐
  • 왜냐하면 우리가 입력한 값에 따라 sql쿼리문 바껴서( sql쿼리문 조작 가능)

👇 테이블에 모든 정보 출력됨

조건문이 항상 참이되도록 함
id =1이라는 것과 상관 없이 모든 id정보 출력됨

💡 이것을 이용해서 원래 나의정보만 알 수 있는 페이지에서 다른 사용자의 정보 알아내는 것이 가능하도록 했음

→ # 입력하면 오류 발생 안함 : mysql에서 # 이후에 것들은 주석으로 처리하기 때문이다. 다른 sql에서는 //로 주석 이용

Union 공격

db 접근하는 명령어를 통해 조회

blind sql injection

참, 거짓 정보만 알고도 정보를 알려주는 기법
존재하는지만 알려줌

1' AND 1=2#

-> 실행하면 사용자 없다고 나옴

네트워크 창에서 시간이 소요되는지에 따라서 사용자인지 확인 가능

SQLMAP 프로그램 사용하여 blind sql injection하기

프로그램으로 자동으로 실행하는 것

medium 단계

intercept on으로 설정하여 query 변경
id=1&Submit=Submit -> id=1'or'1'=1으로 설정

forward하게 되면 에러 발생함
-> medium에서는 '가 없기 때문에 빼고 적용하기
id=1 or 1=1

정보를 출력해줌!

high 단계

limit을 통해 출력되는 레코드를 조절하는 코드가 추가됨

1'or'1'=1#으로 실행하면 정보 가져올 수 있음

sql injection 대응 방법

입력값을 검증해주기

profile
Always live diligently
post-custom-banner

0개의 댓글