>  기사  >  데이터 베이스  >  SQL 주입을 수행하는 방법

SQL 주입을 수행하는 방법

(*-*)浩
(*-*)浩원래의
2019-05-18 10:14:5326539검색

소위 SQL 주입은 웹 양식 제출에 SQL 명령을 삽입하거나 페이지 요청에 대한 도메인 이름이나 쿼리 문자열을 입력하여 궁극적으로 서버를 속여 악성 SQL 명령을 실행하는 것입니다.

SQL 주입을 수행하는 방법

구체적으로는 기존 애플리케이션을 활용하여 (악성) SQL 명령을 백엔드 데이터베이스 엔진에 주입하여 실행하는 기능입니다. 보안 취약점이 있는 웹 사이트에서 설계자가 의도한 대로 SQL 문을 실행하지 않고 웹 양식에 (악의적인) SQL 문을 입력하여 공격하는 경우. 예를 들어, 이전의 많은 영화 및 TV 웹사이트에서는 주로 웹 양식을 통해 쿼리 문자를 제출하여 VIP 회원 비밀번호를 유출했습니다. 이러한 양식은 특히 SQL 삽입 공격에 취약합니다.

SQL 주입 기술

오류 강제 실행

데이터베이스 유형의 경우, 버전 및 기타 정보 식별이 이러한 유형의 공격의 동기가 됩니다. 그 목적은 다른 유형의 공격에 대비하기 위해 데이터베이스 유형, 구조 및 기타 정보를 수집하는 것입니다. 애플리케이션 서버가 반환하는 기본 오류 메시지를 활용하여 취약점 정보를 얻습니다.

비주류 채널 기술 사용

HTTP 응답 외에도 채널을 통해 데이터를 얻을 수 있습니다. 그러나 대부분의 채널은 기능에 의존합니다. 데이터베이스에서 지원되므로 이 기술이 모든 데이터베이스 플랫폼에 완벽하게 적용되는 것은 아닙니다. SQL 주입을 위한 비주류 채널에는 주로 이메일, DNS 및 데이터베이스 연결이 포함됩니다. 기본 아이디어는 먼저 SQL 쿼리를 패키지한 다음 비주류 채널을 사용하여 공격자에게 정보를 피드백하는 것입니다.

특수문자 사용

다양한 SQL 데이터베이스에는 안전하지 않거나 특정 구성에 따라 필터링되지 않는 다양한 특수 문자 및 변수가 있습니다. 신중한 응용 시스템 유용한 정보를 얻을 수 있으며 이를 통해 추가 공격에 대한 방향을 제시할 수 있습니다.

조건문 사용

이 방법은 콘텐츠 기반, 시간 기반, 오류 기반의 세 가지 형식으로 나눌 수 있습니다. 일반적으로 정기 접속 후 조건문을 추가하며, 정보 피드백을 바탕으로 공격 대상을 결정합니다.

저장 프로시저 사용

일부 표준 저장 프로시저를 통해 데이터베이스 공급업체가 데이터베이스 기능을 확장하는 동안 시스템은 다음을 사용하여 구현할 수도 있습니다. 상호 작용. 일부 저장 프로시저는 사용자가 정의할 수 있습니다. 다른 유형의 공격을 통해 데이터베이스의 종류, 구조 등의 정보를 수집한 후 저장 프로시저를 실행하는 명령어를 구성할 수 있다. 이러한 유형의 공격은 원격 명령 실행, 권한 확장, 서비스 거부 등의 목표를 달성할 수 있는 경우가 많습니다.

입력 필터링 기술 피하기

일부 필터링 기술을 사용하면 정상적인 코딩에서 SQL 삽입을 방지할 수 있지만, 이를 고려하여 많은 필터링 기술이 있습니다. 일반적으로 이를 달성하기 위한 기술적 수단에는 SQL 주석 및 동적 쿼리 사용, 잘림 사용, URL 인코딩 및 널 바이트 사용, 대문자 및 소문자 변형 사용, 중첩 제거 후 표현식이 포함됩니다. .공식 등등. 이러한 수단을 통해 입력된 쿼리는 입력 필터링을 피할 수 있으므로 공격자는 원하는 쿼리 결과를 얻을 수 있습니다.

추론 기술

은 데이터베이스 스키마를 명확하게 하고 데이터를 추출하며 주입 가능한 매개변수를 식별할 수 있습니다. 이 유형의 공격은 웹사이트가 사용자에게 입력한 피드백 정보를 사용하여 주입 가능한 매개변수와 데이터베이스 스키마를 추론합니다. 이 공격으로 구성된 쿼리를 실행한 후 얻은 답변은 true 또는 false일 수 있습니다. 추론을 기반으로 한 주입 방법은 크게 시간 결정 주입과 블라인드 주입의 두 가지 유형으로 구분됩니다. 전자는 주입문에 "waitfor 100" 같은 문을 추가하고, 주입 성공 여부를 판단하고, 쿼리 결과가 나오는 시간을 기준으로 데이터 값 범위를 도출하는 것이 주로 "그리고 l=이다. l", "and l= 2" 두 가지 고전적인 주입 방법입니다. 이들 방법은 모두 간접적으로 관련되어 응답을 얻을 수 있는 질문을 하고, 응답 정보를 통해 원하는 정보를 추론한 후 공격을 수행한다.

위 내용은 SQL 주입을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.