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로 변경해야 했습니다.감사합니다
실제
mysqli_query()
복수 쿼리는 허용되지 않습니다. 이를 위해서는 mysqli_multi_query()가 필요하며 해당 기능을 사용하지 않으면 DROP TABLE 예제와 같이 여러 쿼리 실행에 의존하는 SQL 주입 공격으로부터 보호됩니다.그러나 SQL 주입은 DROP TABLE 외에도 다른 유형의 피해를 일으킬 수 있습니다.
SQL 쿼리의 논리를 제어할 수 있는 추가 매개변수를 사용하여 PHP 페이지의 URL에 액세스할 수 있습니다.
테이블의 모든 행 읽기:
으아악다른 표 읽기:
으아악1조 행 임시 테이블이 있는 데이터베이스 서버를 종료하기 위해 서비스 거부 공격을 수행합니다.
으아악SQL 주입이 반드시 악의적인 공격은 아닙니다. 이는 합법적인 문자열을 의도치 않게 사용하여 예상치 못한 SQL 구문이 발생할 수 있습니다.
으아악SQL 주입에 대한 수정은 잘 알려져 있고 간단합니다. 매개변수화된 쿼리를 사용하세요.
mysqli_prepare() 매뉴얼 을 확인하거나 PHP에서 SQL 주입을 방지하는 방법과 같은 인기 있는 전체 예제 스택 오버플로 질문을 확인하세요.