>  기사  >  데이터 베이스  >  블라인드 SQL 인젝션에 대한 간략한 이해

블라인드 SQL 인젝션에 대한 간략한 이해

WBOY
WBOY앞으로
2022-06-01 11:47:274903검색

이 기사에서는 SQL에 대한 관련 지식을 제공하며, 블라인드 주입과 관련된 문제를 주로 소개합니다. 블라인드 주입은 데이터베이스에서 쿼리한 데이터 결과를 단일 문자로 잘라낸 후 다음과 같이 논리문을 함께 구성합니다. 모든 사람에게 도움이 되기를 바랍니다.

블라인드 SQL 인젝션에 대한 간략한 이해

추천 학습: "SQL Tutorial"

sql 주입 - blind 주입

1. Review

Echo 주입은 주로 데이터베이스의 데이터를 웹 사이트 페이지에 직접 표시하는 데 사용됩니다.
오류 주입은 웹사이트 페이지에 원래 오류 정보가 존재하고, 데이터베이스에 있는 데이터가 원래 오류 정보로 표시될 때 주로 사용됩니다. 오류 에코라고도 합니다.
원리: 사용자가 통제할 수 없는 입력을 하기 때문에 공격자가 악의적인 SQL 문을 임의로 입력하여 SQL 의미가 변경되어 데이터베이스와 운영 체제에 위험을 초래할 수 있습니다.

위험: 데이터 조작, 로그인 우회, 파일 조작, 명령 실행, 레지스트리 조작.

방어: 필터링, 사전 컴파일.

2. 블라인드 주입 취약점 시나리오

1. 데이터베이스의 데이터가 페이지에 직접 표시되지 않으며, 판단 후의 결과가 페이지에 출력됩니다. 예를 들어 로그인 상자
2. 삽입, 업데이트, 삭제 구문에는 데이터 쿼리 기능이 없으며 데이터베이스의 데이터가 페이지에 존재하지 않습니다. 등록, 정보 수정, 데이터 추가

3. 블라인드 주입 원리

Core
데이터베이스에서 쿼리한 데이터 결과를 단일 문자로 잘라서 논리문을 함께 구성합니다. 데이터베이스의 쿼리 결과는 페이지 표시가 비정상인지, 페이지가 시연되는지 여부를 판단하여 판단합니다.

4. 분류

1. bool 블라인드 주입
해당 데이터가 데이터베이스에 있으면 페이지가 정상적으로 표시되고, 그렇지 않으면 비정상적으로 표시됩니다.

2. 타임블라인드 주입
어떤 데이터가 입력되더라도 데이터베이스의 쿼리 결과는 페이지 지연 여부에 따라 판단될 수 있습니다.

5. 프로세스

1. 인젝션이 의심되는 지점을 찾아, 데이터베이스와 상호작용하는 곳을 찾아냅니다
2. SQL 인젝션으로 생성된 악성 SQL 문이 있는지 확인합니다. 페이지의 응답 정보가 예상과 일치합니다. 이는 삽입이 있음을 나타냅니다.
3. 데이터베이스 이름 가져오기

1.获取当前数据库名
	and ascii(substr((select database()),1,1))=115
2.获取所有数据库名
	and (select ascii(substr(group_concat(schema_name),1,1)) from information_schema.schemata)>0

3. 가져올 데이터의 길이 계산

and (select length(group_concat(schema_name)) from information_schema.schemata)>10 --+

4. 테이블 가져오기
5. 열 가져오기
6. 데이터 가져오기

6. Time blind 주입

and if(((select database())='a'),sleep(5),0)--+

7. 요약

OK Time blind 주입은 echo, error looking, bool 주입이 일어나는 곳이면 어디든 일어날 수 있습니다. 역방향이 불가능할 경우 echo looking, error looking이 일어나는 곳에서는 bool 형태의 blind 주입이 일어날 수 있지만 그 반대는 아닙니다.

8.sqlmap

Python2에서 개발되었으며 Python3과 호환되는 SQL 주입 자동화 도구입니다. sqlmap을 사용하면 실제로 웹사이트에 대한 사람들의 요청 프로세스를 시뮬레이션하고 얻은 데이터를 수집, 분석 및 표시할 수 있습니다.

python sqlmap.py -h	查看sqlmap可使用的参数
                 -u 网站的url	向sqlmnap提供注入点

블라인드 SQL 인젝션에 대한 간략한 이해
–dbs 모든 데이터베이스 이름 가져오기
블라인드 SQL 인젝션에 대한 간략한 이해

-D 라이브러리 지정--테이블 지정된 데이터베이스의 모든 테이블에 대한 정보 가져오기
블라인드 SQL 인젝션에 대한 간략한 이해

-D 라이브러리 지정-T 테이블 지정--열 지정
블라인드 SQL 인젝션에 대한 간략한 이해

-D는 라이브러리를 지정합니다. -T는 테이블을 지정합니다. -C 열 1, 열 2를 지정합니다. --dump
블라인드 SQL 인젝션에 대한 간략한 이해

-r '파일 이름'
블라인드 SQL 인젝션에 대한 간략한 이해

권장 학습: "SQL 튜토리얼"

위 내용은 블라인드 SQL 인젝션에 대한 간략한 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제