컴퓨터프로그래밍

SQL 주입은 무엇인가?

사이트와 웹 페이지의 수는 꾸준히 증가하고있다. 사람이 할 수있는 모든 사람들의 개발을 위해 촬영. 그리고 초보 웹 개발자는 안전하지 않은 오래된 코드를 사용합니다. 그리고 그것은 범죄자와 해커에 대한 허점을 많이 만듭니다. 그들은보다. SQL 주입 - 가장 고전적인 취약점 중 하나입니다.

이론의 비트

많은 사람들이 네트워크 사이트 및 서비스의 대부분은 SQL 데이터베이스 스토리지를 사용하고 있는지 알고있다. 이것은이다 구조화 된 쿼리 언어 는 데이터의 저장을 제어하고 관리 할 수 있습니다. 오라클, MySQL은, Postgre - 데이터베이스 관리 시스템 데이터베이스의 여러 가지 버전이 있습니다. 에 관계없이 이름과 유형, 그들은 같은 쿼리 데이터를 사용합니다. 그것은 잠재적 인 취약점을 놓 여기에있다. 개발자가 적절하게 처리하고 안전하게 요청에 실패하면, 공격자는이 활용하고 데이터베이스에 액세스하고, 특별한 전술을 사용할 수 있습니다 - 모든 사이트 관리합니다.

이러한 상황을 방지하려면 적절하게 코드를 최적화하고 밀접 요청이 처리되고있는 방식으로 모니터링 할 필요가있다.

SQL 인젝션 확인

네트워크의 취약점의 존재를 확립하는 것은 완료 자동화 된 소프트웨어 시스템의 무게를 가지고있다. 그러나 수동으로 간단한 검사를 수행 할 수 있습니다. 이렇게하려면, 테스트 사이트 중 하나에 가서 주소 표시 줄에 데이터베이스 오류가 발생하려고 할 수 있습니다. 예를 들어, 사이트의 스크립트는 요청을 처리 할 수없는 그들을 잘라하지 않습니다.

예를 들어, / index.php에이 nekiy_sayt? 식 (25)

가장 쉬운 방법은 - 견적 후 (25)을 넣어 요청을 보낼 수 있습니다. 오류가 어느 사이트 및 필터에 발생하지 않으면 모든 요청이 올바르게 처리, 또는 출력의 설정에서 비활성화되어 있습니다. 페이지가 문제를 다시로드되면, SQL 인젝션의 취약성이다.

그녀가 발견 한 후에는 제거를 시도 할 수 있습니다.

에 대해 조금 알이 취약점 필요 구현하려면 SQL-쿼리 팀. 그 중 하나 - UNION. 그것은 하나에 여러 개의 쿼리 결과를 함께 제공합니다. 그래서 우리는 테이블에있는 필드의 수를 계산할 수 있습니다. 예 첫 번째 쿼리는 다음과 같습니다

  • nekiy_sayt / index.php에? ID = 25 UNION SELECT 1.

대부분의 경우,이 기록은 오류를 생성합니다. 이 필드의 수, 자신의 정확한 수를 설정하는 것이 가능 하나 이상의 옵션을 선택, 따라서 (1) 동일하지 않은 것을 의미한다 :

  • nekiy_sayt / index.php에? ID = 25 UNION SELECT 1,2,3,4,5,6.

오류가 더 이상 표시되지 않습니다 때, 즉 필드의 수를 추측하는 것을 의미한다.

이 문제에 대한 대안 솔루션도 있습니다. 예를 들어, 필드의 다수 - 30 60 (100)이 명령 GROUP BY. 이 그룹 예를 들어 ID에 대한 어떤 근거에서 쿼리의 결과 :

  • nekiy_sayt / index.php에? ID = 5 25 GROUP.

오류가 수신되지 않은 경우, 다음 필드 이상 (5) 따라서, 상당히 넓은 범위에서 옵션을 대체, 실제로 그들 중 얼마나 많은을 계산하는 것이 가능하다.

이 예제 SQL 주입 - 그 사이트의 시험에 자신을 시도하려는 초보자를위한. 형법 가능한 다른 기사에 대한 무단 액세스에 대한 것을 기억하는 것이 중요하다.

분사의 주요 유형

몇몇 실시 예에서 SQL 인젝션 의한 취약성을 구현한다. 다음으로 가장 인기있는 방법은 다음과 같습니다

  • 연합 쿼리는 SQL 주입. 이 유형의 간단한 예는 상기에서 이미 검토되고있다. 그것은 의한 필터링되지 않은 수신 데이터를 체크에서 에러로 실현된다.

  • 오류 기반 SQL 주입입니다. 이름에서 알 수 있듯이,이 유형은 문법적으로 잘못된 구성 표현을 전송 오류를 사용합니다. 나중에 SQL 인젝션 조작을 실시 할 수 응답 헤더 해석의 차단이있다.

  • 스택은 은 SQL 쿼리 주입. 이 취약점은 연속적인 요청을 수행하여 결정됩니다. 그것은 기호의 끝에서 또한 특징입니다 ";". 권한을 허용하는 경우 이러한 접근 방식은 종종 데이터를 읽고 쓰는 또는 운영 체제 기능의 구현에 액세스하기 위해 구현됩니다.

SQL-취약점을 검색하기위한 소프트웨어

SQL 주입에 대한 있는가, 프로그램은 일반적으로 두 가지 구성 요소가 있습니다 - 사이트가 가능한 취약점을 스캔하고 데이터에 액세스하는 데 사용할. 거의 모든 알려진 플랫폼을위한 몇 가지 도구가 있습니다. 이들의 기능은 크게 SQL 주입 균열의 웹 사이트를 확인 용이하게합니다.

하는 SQLMaps

대부분의 데이터베이스와 함께 작동 매우 강력한 스캐너. 이것은 SQL 인젝션 구현하는 다양한 방법을 지원한다. 자동으로 암호 해시 균열 및 사전의 유형을 인식 할 수있는 능력을 가지고 있습니다. 서버에서 현재와 기능 파일 업로드 및 다운로드합니다.

리눅스의 설치는 명령을 사용하여 수행됩니다 :

  • 자식 복제 https://github.com/sqlmapproject/sqlmap.git하는 SQLMaps-DEV,
  • cdsqlmap-DEV /
  • ./sqlmap.py --wizard.

Windows의 명령 줄 및 그래픽 사용자 인터페이스를 옵션으로 사용할 수 있습니다.

jSQL 주입

jSQL 주입 - SQL 취약점의 사용을 테스트하기위한 크로스 플랫폼 도구입니다. 자바로 작성된, 그래서 시스템은 JRE를 설치해야합니다. 요청, POST, 헤더, 쿠키를 GET 처리 할 수. 그것은 편리한 그래픽 인터페이스를 가지고 있습니다.

다음과 같이이 소프트웨어 패키지의 설치는 다음과 같습니다

wget을 https://github.com/`curl -s은 https : //github.com/ron190/jsql-injection/releases | '그렙-E -o /ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2}의 .jar "| 헤드 N 1`

런칭는 -jar ./jsql-injection-v*.jar 명령 자바를 사용하는 것입니다

SQL-취약점에 테스트 사이트를 시작하려면 상단 필드에 주소를 입력해야합니다. 그들은 GET 및 POST에 대한 별도입니다. 긍정적 인 결과로, 가능한 테이블 목록은 왼쪽 창에 나타납니다. 당신이 그들을보고 약간의 기밀 정보를 배울 수 있습니다.

탭«관리자 페이지»은 관리 패널을 찾는 데 사용. 특별한 서식에 의하여가에 자동으로 시스템이 권한이있는 사용자를 기록 검색합니다. 그들에서 당신은 암호의 단지 해시를 얻을 수 있습니다. 그러나 그는 프로그램의 도구 상자에 있습니다.

모든 취약점 및 사출 필요한 문의를 찾은 후,이 도구는 서버가 파일에 작성하거나, 반대로 거기에서 다운로드 할 수 있습니다.

SQLI 온보드 7 절

이 프로그램 - 쉬운 SQL 취약점을 발견하고 구현하기위한 도구를 사용합니다. 그것은 유엔이 소위 도르가를 기반으로 생산하고 있습니다. 이들의 목록은 인터넷에서 찾을 수 있습니다. SQL 주입을위한 Dorca -이 검색 쿼리의 특별한 템플릿입니다. 그들의 도움으로, 당신은 모든 검색 엔진을 통해 잠재적으로 취약한 사이트를 찾을 수 있습니다.

교육을위한 도구

Itsecgames.com 사이트에있는 예제는 SQL 주입을하고 테스트하는 방법을 보여줍니다 수 있습니다 도구의 특별한 세트가있다. 이익을 위해서는 다운로드하고 설치하는 것이 필요하다. 아카이브는 사이트의 구조 파일 세트가 포함되어 있습니다. 설치하려면이 아파치 웹 서버, MySQL과 PHP의 세트의 기존 시스템에 필요합니다.

웹 서버의 폴더에 압축 파일을 풀고,이 설치할 때 입력 한 주소로 가야 소프트웨어를. 사용자 등록이있는 페이지입니다. 여기에서 당신은 당신의 정보를 입력하고«만들기»를 클릭해야합니다. 새 화면에 사용자를 이동, 시스템은 테스트 케이스 중 하나를 선택하라는 메시지를 표시합니다. 그 중 둘은 사출, 그리고 많은 다른 시험 항목에 의해 설명이 있습니다.

그것은 SQL 주입 형 GET / 검색의 예를 고려 가치가있다. 여기«해킹»를 선택하고 클릭해야합니다. 전에 사용자가 표시 및 영화 사이트의 검색 문자열 모방합니다. 정렬 영화 길어질 수 있습니다. 그러나 만 10 예를 들어이있다, 당신은 아이언 맨 (Iron Man)를 입력하려고 할 수 있습니다. 그것은 영화, 다음 사이트가 작동하고, 여기에 포함 된 테이블을 표시합니다. 이제 우리는 특정 인용에 특수 문자 스크립트 필터 있는지 확인해야합니다. 이렇게하려면 주소 표시 줄에 '추가 할 수 있습니다. " 또한,이 영화의 제목 후에 수행해야합니다. 이 사이트는 오류 오류를 줄 것이다 : 당신은 당신의 SQL 구문에 오류가 있습니다; 문자가 여전히 제대로 처리되지 않습니다 상태 라인 (1)에서 '근처에'% '를 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인. 그래서 당신은 당신의 요청을 대체 할 시도 할 수 있습니다. 그러나 우리는 첫번째 필드의 수를 계산해야합니다. & 액션 = 검색 - 2 http://testsites.com/sqli_1.php?title=Iron+Man '순서 : 그것은 따옴표 후 도입하여이 순서에 사용됩니다.

이 명령은 필드의 수는 이중 하이픈은 다른 요청을 폐기해야 함을 의미보다 2보다 한 영화에 대한 정보를 표시합니다. 이제 우리는 한 오류가 인쇄되지 않습니다으로 증가 중요성을 두는 분류해야합니다. 결국,이 필드는 7 일 것으로 밝혀졌습니다.

지금은 기본에서 유용하게 뭔가를 할 시간이다. 약간 형태로 가져, 주소 표시 줄에 요청을 수정합니다 :) () (http://testsites.com/sqli_1.php?title=Iron+Man 노조가 1 선택, 데이터베이스 사용자, 4, 비밀번호, 6, 7 사용자에서 - & 액션 = 검색. 쉽게 온라인 서비스 중 하나를 사용하여 이해할 문자로 변환 할 수있는 암호 해시와 문자열을 표시 할 것이다 구현의 결과. A는 조금 연상, 당신은 사이트의 관리자로, 다른 사람의 항목에 액세스 할 수 있습니다 로그인과 필드 이름을 집어 들었다.

이 제품은 연습 할 수있는 체중 종 주입 유형을 가지고 있습니다. 실제 사이트의 네트워크에서 이러한 기술의 응용 프로그램이 범죄가 될 수 있음을 기억해야한다.

사출 및 PHP

규칙의 PHP 코드와 같이 사용자로부터 들어오는 필요한 요청을 처리 할 책임이있다. 따라서,이 수준에서 당신은 PHP에서 SQL 주입에 대한 방어를 구축 할 필요가있다.

먼저, 그렇게 할 필요가있는 기초, 몇 가지 간단한 지침을 제공 할 수 있습니다.

  • 데이터는 항상 데이터베이스에 배치되기 전에 처리되어야합니다. 이것은 기존의 표현을 사용하거나 수동으로 쿼리를 구성하여 중 하나를 수행 할 수 있습니다. 여기에서도, 숫자 값이 필요한 형식으로 변환 된 것을 고려해야한다;
  • 회피는 다양한 제어 구조를 자극했다.

이제 SQL 주입을 방지하기 위해 MySQL의에 쿼리를 컴파일의 규칙에 대해 조금.

조회 할 수있는 표현을 그리기에 SQL 키워드에서 데이터를 분리하는 것이 중요하다.

  • 테이블 WHERE 이름 = 저그 SELECT * FROM.

모든 필드의 이름, 그래서 당신은 따옴표로 묶어야합니다 -이 구성에서, 시스템은 저그라고 생각 할 수있다.

  • SELECT * FROM 테이블 WHERE 이름 = '저그'.

값 자체가 따옴표를 포함 때가 있습니다.

  • SELECT * FROM 테이블 WHERE 이름 = '코트 디부 아르'.

여기에만 코트 디부의 일부를 처리하고 나머지 팀, 물론,하지로 인식 될 수있다. 따라서, 오류가 발생한다. 그럼 당신은 선별 이러한 종류의 데이터가 필요합니다. \ -이 작업을 수행하려면 백 슬래시를 사용합니다.

  • SELECT * FROM 테이블 WHERE 이름 = '고양이-d 개 \'아르 '.

위의 모든 행을 의미합니다. 액션이 다수 발생한다면, 그것은 어떤 따옴표 또는 슬래시를 필요로하지 않는다. 그러나, 그것들은 강제적으로 원하는 데이터 타입을 초래할해야한다.

필드 이름을 역 인용 부호로 묶어야합니다 권고가 있습니다. 이 기호는 "~"물결과 함께, 키보드의 왼쪽에 있습니다. 이것은 MySQL이 정확하게 키워드 필드의 이름을 구별 할 수 있도록하는 것입니다.

데이터를 동적 작업

매우 자주, 동적으로 생성 된 쿼리를 사용하여 데이터베이스에서 데이터를 얻을 수 있습니다. 예를 들면 :

  • SELECT * FROM 테이블 WHERE 수 = '$ 번호'.

여기서, 변수 $ 번호 필드의 값을 결정하는 단계로 전달된다. 이 '코트 디부 아르'를 얻을 경우 어떻게됩니까? 오류가 발생했습니다.

이 문제를 방지하려면, 물론, 당신은 "매직 따옴표"설정을 포함 할 수 있습니다. 하지만 지금은 데이터가 필요한 경우 필요하지 상영됩니다. 코드가 손으로 작성된 경우 또한, 당신은 시스템 자체 균열에 내성을 만들 수있는 조금 더 많은 시간을 보낼 수 있습니다.

슬래시의 독립적 추가 할 mysql_real_escape_string를 사용할 수 있습니다.

$ 번호 =는 mysql_real_escape_string ($ 번호);

$ 년 =는 mysql_real_escape_string ($ 년);

$ 쿼리 = "테이블에 삽입 (수, 년, 클래스) VALUES ( '$ 번호', '$ 년', 11)".

코드와 볼륨 증가, 아직 있지만 잠재적으로 훨씬 안전한 작동합니다.

자리

자리 표시 자 - 시스템이 당신이 특별한 기능을 대체 할 필요가있는 곳이라고 인식하는 마커의 일종. 예를 들면 :

$ 물리게 = $ mysqli-> 준비 ( "SELECT 지구 번호 FROM WHERE 이름 =?");

$ Sate-> bind_param ( "S", $ 번호);

$ Sate-> (실행);

이 부분의 코드는, 트레이닝 요구 템플릿을 얻어 다음 가변 개수를 결합하고이를 실행한다. 이 방법을 사용하면 쿼리 처리 및 구현을 분할 할 수 있습니다. 따라서,이 악성 코드의 사용으로 저장할 수는 SQL-있습니다.

무엇 수도 공격자

보호 시스템 - 소홀히 할 수없는 매우 중요한 요소. 물론, 간단한 명함 - 사이트 복원하기 쉬울 것입니다. 그리고 그것은 큰 포털, 서비스, 포럼 있다면? 보안에 대해 생각하지 않으면 그 결과는 무엇인가?

첫째, 해커는 모두베이스의 무결성을 깰 수 완전히 제거합니다. 사이트 관리자 나 호스팅 백업을하지 않는 경우에, 당신은 어려움이있을 것이다. 무엇보다도, 단일 사이트를 크래킹 침입자는 동일한 서버에 게시 다른 갈 수 있습니다.

다음 방문자의 개인 정보의 도난입니다. 사용 방법 - 모든 만 해커의 상상력에 의해 제한됩니다. 그러나 어떤 경우에, 그 결과는 매우 즐거운되지 않습니다. 특히 금융 정보가 포함되어 있습니다.

또한, 공격자는 데이터베이스를 직접 병합 할 수 있습니다 다음, 그것의 반환을 위해 돈을 뜯어.

사이트 관리자를 대신하여 잘못된 정보 사용자는 그들이 존재하지 않는 사람은, 수도 사기 사실과 같은 부정적인 결과가 될 수 있습니다.

결론

이 문서의 모든 정보는 정보 제공 목적으로 만 제공됩니다. 그것은 단지이 취약점을 감지 할 때 자신의 프로젝트를 테스트하고이를 해결해야합니다.

SQL 주입을 수행하는 방법에 대한 기술에 대한보다 심도있는 연구의 경우, SQL 언어의 실제 연구 능력 및 기능을 시작하는 것이 필요하다. 컴파일 된 쿼리, 키워드, 데이터 유형, 그리고 모두를 사용한다.

또한 PHP와 HTML 요소 기능의 작동을 이해하지 않고 할 수 없습니다. 주 사용 주사 취약한 점 - 주소 라인, 다양한 검색 필드. PHP 함수를 학습, 구현 및 기능의 방법은 실수를 방지하는 방법을 알아낼 것이다.

많은 준비가 만든 소프트웨어 도구의 존재는 사이트 알려진 취약점에 대한 심도있는 분석을 할 수 있습니다. 가장 인기있는 제품 중 하나 - 칼리 리눅스. 사이트 강도의 포괄적 인 분석을 수행 할 수있는 도구와 프로그램의 큰 숫자를 포함하는 리눅스 기반 운영 체제의이 이미지.

당신은 사이트를 해킹하는 방법을 알 필요가? 그것은 매우 간단합니다 - 당신의 프로젝트 또는 웹 사이트의 잠재적 취약성을 인식 할 필요가있다. 그것은 지불 사용자 데이터가 공격자에 의해 손상 될 수있는 온라인 지불과 온라인 상점 특히합니다.

기존의 정보 보안 인력의 전문 연구를 위해 기준과 깊이의 다양한 사이트를 체크 아웃 할 수 있습니다. 간단한 HTML-주사에서와 사회 공학 및 피싱에 시작.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ko.unansea.com. Theme powered by WordPress.