sql 인젝션 예제

일반 블라인드, 당신은 페이지에서 응답을 볼 수 없습니다,하지만 당신은 여전히 응답 또는 HTTP 상태 코드 완전히 블라인드에서 쿼리의 결과를 확인할 수 있습니다, 당신은 어떤 종류의 출력에 어떤 차이를 볼 수 없습니다. 이는 로깅 함수 또는 이와 유사한 주입일 수 있습니다. 흔한 일은 아닙니다. UNION 연산자는 SQL 삽입에서 테스터가 의도적으로 위조한 쿼리를 원래 쿼리에 조인하는 데 사용됩니다. 위조된 쿼리의 결과는 원래 쿼리의 결과에 조인되어 테스터가 다른 테이블의 열 값을 가져올 수 있도록 합니다. 서버에서 실행된 쿼리가 다음과 같은 예라고 가정해 보겠습니다: SQL 주입 및 웹 사이트 SQL 공격 방지는 매우 쉽지만 많은 조직에서 심각한 문제를 일으킬 수 있는 위반을 방지하기 위한 간단한 단계를 수행하지 못합니다. 비즈니스, 평판 및 수익에 손상을 입힐 수 있습니다. 이전 단계에서는 bob@example.com 시스템에 계정이 있다는 것을 알고 있었고 SQL 주입을 사용하여 전자 메일 주소로 데이터베이스 레코드를 업데이트했습니다. 코드의 원래 목적은 지정된 사용자 ID를 사용하여 사용자를 선택하는 SQL 문을 만드는 것이었습니다. 오류 기반 악용 기술은 어떤 이유로 테스터가 UNION과 같은 다른 기술을 사용하여 SQL 주입 취약점을 악용할 수 없는 경우에 유용합니다.

오류 기반 기술은 데이터베이스가 결과에 오류가 되는 일부 작업을 수행하도록 강제하는 것으로 구성됩니다. 여기서 요점은 데이터베이스에서 일부 데이터를 추출하여 오류 메시지에 표시하는 것입니다. 이러한 악용 기술은 DBMS에서 DBMS로 다를 수 있습니다(DBMS 특정 섹션 확인). 이 시리즈에서는 일반적인 공격의 단계별 예제를 보여 줄 것입니다. 웹 응용 프로그램을 대상으로 하는 기본 SQL 주입 공격으로 시작하여 OS 루트로 권한 에스컬레이션을 시작합니다. 주사를 방지하는 오류 발생 가능성이 있지만 간단하지만 SQL에서 특별한 의미가 있는 문자를 이스케이프하는 것입니다. SQL DBMS에 대한 설명서는 특별한 의미가 있는 문자를 설명하므로 번역이 필요한 문자의 포괄적인 블랙리스트를 만들 수 있습니다. 예를 들어 매개 변수에서 단일 따옴표(`)가 발생할 때마다 유효한 SQL 문자열 리터럴을 형성하려면 두 개의 작은따옴표(« )로 바꿔야 합니다. 예를 들어 PHP에서는 mysqli_real_escape_string(함수를 사용하여 매개 변수를 이스케이프하는 것이 보통입니다.). SQL 쿼리를 보내기 전에 각각 원래 검토가 « 1=1 » URL로 로드되고 « 1=2 » URL에서 빈 또는 오류 페이지가 반환되고 반환된 페이지가 생성되지 않아 입력이 유효하지 않거나 즉 입력 테스트 스크립트에 의해 발견되었습니다. .

해커는 서버에서 실행 중인 MySQL의 버전 번호를 표시하도록 설계된 이 쿼리 문자열을 진행할 수 있습니다: http://books.example.com/showReview.php?ID=5 및 하위 문자열(@@version, 1, INSTR(@@version, `.`) – 1)=4, 이는 책 검토를 표시합니다. 그렇지 않으면 MySQL 4 및 빈 또는 오류 페이지를 실행하는 서버. 해커는 쿼리 문자열 내에서 코드를 계속 사용하여 다른 공격 경로가 발견되거나 목표가 달성될 때까지 서버에서 더 많은 정보를 수집할 수 있습니다. [16] [17] 추론 방법을 사용하여 이러한 장애물을 방지하여 원하는 일부 필드의 값을 복구하는 데 성공할 수 있습니다. 이 메서드는 서버에 대해 일련의 부울 쿼리를 수행하고 답변을 관찰하고 마지막으로 이러한 답변의 의미를 추론하는 것으로 구성됩니다.

Les commentaires sont fermés.