>  Q&A  >  본문

성공적인 SQL 주입을 위해서는 mysqli_multi_query를 사용하는 것이 중요합니다.

SQL 주입 예제를 만들려고 하는데 mysqli_multi_query로 변경하지 않으면 MySQL은 두 번째 쿼리를 매번 거부합니다.

으아아아

이 양식은 실제로 아무 작업도 수행하지 않습니다. 단지 SQL 삽입을 사용하여 데이터를 편집할 수 있다는 점을 보여주고 싶습니다. "DROP TABLE testTable"이 입력된 곳에 인젝션을 수행하고 싶습니다. 내 MySQL은 다음과 같습니다:

으아아아

injection 진입시 : ';Delete table test table --

출력은 다음과 같습니다. 오류: SELECT * FROM users WHERE 이름 = ''; 테이블 테스트 테이블 삭제 --' SQL 구문에 오류가 있습니다. 1행 "DROP TABLE testTable --" 근처에서 사용할 올바른 구문은 MySQL 서버 버전 설명서를 확인하세요.

튜토리얼을 진행했는데 MySQLi_query를 사용했는데 제대로 작동했지만 주입을 완료하려면 Mysqli_multi_query로 변경해야 했습니다.

감사합니다

P粉925239921P粉925239921332일 전458

모든 응답(1)나는 대답할 것이다

  • P粉795311321

    P粉7953113212023-12-16 00:48:03

    실제mysqli_query()복수 쿼리는 허용되지 않습니다. 이를 위해서는 mysqli_multi_query()가 필요하며 해당 기능을 사용하지 않으면 DROP TABLE 예제와 같이 여러 쿼리 실행에 의존하는 SQL 주입 공격으로부터 보호됩니다.

    그러나 SQL 주입은 DROP TABLE 외에도 다른 유형의 피해를 일으킬 수 있습니다.

    SQL 쿼리의 논리를 제어할 수 있는 추가 매개변수를 사용하여 PHP 페이지의 URL에 액세스할 수 있습니다.

    테이블의 모든 행 읽기:

    으아악

    다른 표 읽기:

    으아악

    1조 행 임시 테이블이 있는 데이터베이스 서버를 종료하기 위해 서비스 거부 공격을 수행합니다.

    으아악

    SQL 주입이 반드시 악의적인 공격은 아닙니다. 이는 합법적인 문자열을 의도치 않게 사용하여 예상치 못한 SQL 구문이 발생할 수 있습니다.

    으아악

    SQL 주입에 대한 수정은 잘 알려져 있고 간단합니다. 매개변수화된 쿼리를 사용하세요.

    mysqli_prepare() 매뉴얼 을 확인하거나 PHP에서 SQL 주입을 방지하는 방법과 같은 인기 있는 전체 예제 스택 오버플로 질문을 확인하세요.

    회신하다
    0
  • 취소회신하다