>데이터 베이스 >SQL >SQL 인젝션 공격의 원리

SQL 인젝션 공격의 원리

angryTom
angryTom원래의
2020-02-13 17:13:3316441검색

SQL 인젝션 공격의 원리

SQL 주입 공격의 원리

악의적인 사용자가 쿼리 요청을 제출하는 과정에서 요청 내용에 SQL 문을 삽입하는 동시에 프로그램 자체가 사용자가 입력한 내용을 과도하게 신뢰하여 이를 수행합니다. 악의적인 사용자가 삽입한 SQL 문을 실행하지 않습니다. 필터링하면 서버에서 직접 SQL 문이 실행됩니다.

SQL 주입 공격 분류

(1) 주입 지점의 다양한 분류

숫자형 주입 문자열형 주입

(2) 제출 방법의 다양한 분류

GET 주입 POST 주입 COOKIE 주입 HTTP 주입

( 3) 정보를 얻는 방법의 다양한 분류

Boolean 기반 블라인드 주입 시간 기반 블라인드 주입 Error 기반 주입

SQL 주입 공격 사례:

1 기사의 주입 사례 보기:

보기 특정 기사 기사의 url 매개변수가 ?id=1

인 경우 ?id=1 또는 1=1 명령을 삽입하면 전체 데이터 테이블의 모든 기사를 나열할 수 있습니다.

보기 사용자가 다음과 같이 user_id를 통해 액세스하는 경우:? uid=1

?id=1 또는 1=1 명령을 삽입하면 전체 사용자 테이블의 모든 레코드를 표시할 수 있습니다.

SQL 명령은 다음과 같습니다.

?id=1인 SQL 명령은 다음과 같습니다. : select * from article where id=1, 이 문은 1개의 구조를 쿼리합니다

?id=1 및 1=1을 통한 SQL 명령은 다음과 같습니다: select * from article where id=1 또는 1=1, 이 문은 전체 테이블을 쿼리합니다.

2. 사용자 로그인 삽입 사례:

로그인 양식에는 user_name 필드가 있고 쿼리 문은 다음과 같습니다. select * from users where 별명='{user_name}'

user_name 텍스트 상자를 입력할 수 있습니다. : (' 또는 1='1), 삽입된 SQL 명령이 구성될 수 있도록: user_name='' 또는 1='1'인 사용자에서 *를 선택하면 시스템에 쉽게 진입할 수 있습니다.

3. SQL 주입 테이블 추측:

로그인 페이지의 사용자 이름 필드를 입력합니다: (' 또는 1=(t_porg_document에서 count(0) 선택) 또는 1='1) 주입된 SQL 명령을 구성할 수 있습니다. select * from users where user_name='' 또는 1=(select count(0) from recharge) 또는 1='1'

이렇게 하면 충전 테이블이 존재하는지 추측할 수 있습니다. 정상적으로 실행되지 않으면 오류가 보고됩니다.

테이블 이름을 추측한 후 다음과 같이 데이터 테이블을 추가, 삭제, 수정 및 쿼리할 수 있습니다.

로그인 페이지의 사용자 이름 필드에 ('; 사용자에서 삭제)를 입력하고 다음을 수행할 수 있습니다. 위험한 SQL 명령 구성: select * from users where user_name=''; delete from users;

세미콜론을 추가하면 임의의 추가, 삭제, 수정 및 쿼리 SQL 문을 구성할 수 있으며 전체 데이터베이스는 공격자에 의해 제어됩니다. 할 것이다.

PHP 중국어 웹사이트에는 수많은 무료 SQL 튜토리얼이 있습니다. 누구나 배울 수 있습니다!

위 내용은 SQL 인젝션 공격의 원리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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