이 글에서는 DVWA에서 php+mysql을 수동으로 주입하는 방법을 소개합니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들은 참고할 수 있습니다
dvwa 보안 수준이 낮습니다. sql 주입을 입력하세요. 페이지에 사용자 ID를 입력하라는 메시지가 표시됩니다. 올바른 ID를 입력하면 ID의 이름과 성 정보가 표시됩니다.
"'"를 입력하려고 하면 오류가 반환됩니다. 주입 지점이 존재합니다.
데이터베이스 테이블을 순회하려고 하는데 입력된 값이 ID이고, 초기 판단은 숫자형 주입이라는 것입니다. 1 또는 1=1을 입력해 보십시오. 데이터베이스 테이블을 탐색해 보십시오. 결과는 실패했습니다.
1 또는 1=1이 데이터베이스 테이블을 순회하지 못했습니다. 추측 프로그램에서는 이를 문자 유형으로 간주하여 1' 또는 '1을 입력해 볼 수 있습니다. '=' 1이면 데이터베이스의 모든 내용을 순회합니다. 서로 다른 결과를 얻기 위해 서로 다른 진술을 결합해 봅시다.
order by 문을 사용하여 쿼리하고 1'order by 1을 입력합니다. - - 페이지가 정상적으로 표시되고, 1'order by 2 - - 정상적으로 표시되고, 1'order by 3 - - 오류가 보고되며, 쿼리 결과 값이 2열인 것으로 판단됩니다. (문에서 - - 뒤에 공백이 있고 - - 사이에는 공백이 없습니다.)
세 가지 내장 함수 user(), Database(), version()을 사용하여 데이터베이스 계정 이름, 데이터베이스 이름, 데이터베이스 버전 정보, 첫 번째 매개변수 주입 1' 및 1=2 통합 선택 1,2 - -(- - 사이에 공백 없음, - - 뒤에 공백)을 가져옵니다. 질의 결과의 첫 번째 열의 값으로 이름이 표시되고, 질의 결과의 두 번째 열의 값으로 성이 표시되는 것을 알 수 있다.
디스플레이를 확인한 후 user(),database(),version(),statement 1' 및 1=2 Union select user(),database() - - Get 데이터베이스 사용자 및 데이터베이스 이름. 데이터베이스에 연결하는 사용자는 root@localhost이고, 데이터베이스 이름은 dvwa입니다.
1' 및 1=2 공용체 선택 버전(),database()를 삽입하여 - - 데이터베이스 버전은 5.0.90-community-nt입니다.
삽입: 1'and 1=2 Union select 1,@@global.version_compile_os from mysql.user – 운영 체제 정보를 win32로 가져옵니다.
삽입을 통해 : 1' 및 1=2 Union select 1, information_schema.schemata에서 Schema_name - - mysql 데이터베이스, 모든 데이터베이스 이름을 쿼리합니다. 여기에서는 모든 mysql 데이터베이스 및 테이블에 대한 정보를 저장하는 mysql 기본 데이터베이스 information_schema가 사용됩니다.
1'을 삽입하고 존재함(사용자에서 * 선택) - - dvwa 데이터베이스의 테이블 이름을 추측합니다(이 명령문의 테이블 이름은 users이며 테이블은 실제로 사용자 이름과 비밀번호를 저장하지 않습니다)
필드 이름을 추측하세요: 1' 및 존재함(테이블 이름에서 필드 이름 선택) - -, 여기에서는 필드 이름 first_name 및 last_name이 실제로 테스트됩니다. 실제 문 1' 및 presents(사용자에서 first_name 선택) - - 및 1' 및 presents(사용자에서 last_name 선택) - - 필드 이름을 추측합니다.
데이터베이스의 필드 내용을 노출합니다. 1' and 1=2 Union select first_name,last_name from users - - 실제로 관리자 계정을 저장하는 테이블이라면 사용자 이름과 비밀번호가 노출될 수 있습니다.
소스 코드
관련 권장 사항:
위 내용은 php+mysql의 DVWA 수동 주입의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!