우선 먼저 어떤 라이브러리 또는 알고리즘을 호출하는 SQLMaps 변조 종속성이없는 경우 확인하기 위해 두 개의 변조 스크립트를 비교 제공됩니다.
변조는 우리가 개발 한 있도록 가져온 후 스크립트의 함수를 호출하는 것입니다 이러한 호출로 변조 스크립트는 사용하는 함수 호출을 가져야한다 주로 알고리즘 오른쪽 케케을보고
base64encode.py에서 살펴 보자
# !는 / usr / 빈 / ENV 파이썬 "" " 저작권 (C) 2006-2019하는 SQLMaps 개발자 (http://sqlmap.org/) 복사 권한에 대한 파일 '라이센스'를 참조하십시오 "" " 에서 lib.core.convert 수입 encodeBase64 에서 lib.core.enums의 수입 PRIORITY __priority__ = PRIORITY.LOW DEF 종속성 () : 패스 데프 변조 (페이로드, ** kwargs로) : "" " 주어진 페이로드에있는 모든 문자를 Base64로는-인코딩 >>> 탬퍼 ( '1'AND SLEEP (5) # ") 'MScgQU5EIFNMRUVQKDUpIw ==' "" " 반환 encodeBase64 (페이로드, 이진은 거짓 =) 의 경우 페이로드 다른 페이로드
charencode.py에서 봐
# !는 / usr / 빈 / ENV 파이썬 "" " 저작권 (C) 2006-2019하는 SQLMaps 개발자 (http://sqlmap.org/) 복사 권한에 대한 파일 '라이센스'를 참조하십시오 "" " 수입 문자열 에서 lib.core.enums의 수입 PRIORITY __priority__ = PRIORITY.LOWEST DEF 종속성 () : 패스 데프 변조 (페이로드, ** kwargs로) : "" " 주어진 페이로드에있는 모든 캐릭터 (이미 부호화 처리하고 있지 () -> % 53 % 45 %도 4c % 45 % 43 % 54 예 SELECT) URL은 부호화하여 에 대한 테스트 : * 마이크로 소프트 SQL 서버 2005 * MySQL은 4, 5.0 및 5.5 * 오라클 10g * PostgreSQL의 8.3, 8.4, 9.0 노트: * 그 룰 통해 처리하기 전에하지 URL 디코드에게 요청을 우회 미약 웹 어플리케이션 방화벽 유용 * 웹 서버 어쨌든 따라서는 어떤 DBMS에 반대한다, 뒤에 URL 복호화 된 버전을 전달합니다 >>> 탬퍼 ( '% 20TABLE FROM SELECT FIELD') '% 53 % 45 %도 4c % 45 % 43 % 54 % 20 % 46 % 49 % 45 %도 4c % 44 % 20 % 46 % 52 % 4F % 4D % 20 % 54 % 41 % 42 % (c)의 45 % " "" " RETVAL = 페이 경우 페이로드 : RETVAL = "" 나는 = 0 반면 I < 렌 (페이로드) 의 경우 페이로드 [I] == ' % ' 와 (I <렌 (페이로드) - 2) 및 페이로드 [I + 1 + I 2 에서 string.hexdigits 및 페이로드 [내가 + 2 : 나 3] + 에서 string.hexdigits : RETVAL + = 페이로드 [I : I + 3 ] 에서 + 3 = 유무 : RETVAL + = " %%%. 2X ' %의 워드 (페이로드 [I]) I + = 1 반환 RETVAL
우리는 몇 가지 일반적인 스크립트가있는 것을 발견
1. 우선 라이브러리가 라이브러리에 도입하는 것은 lib.core.enums 모듈, 참조에서 우선 순위를 보인다
에서 lib.core.enums의 수입 PRIORITY
2. __priority__ 상기 우선 순위 속성을 정의하는 변수를 할당하는 기준
에서 base64encode.py
__priority__ = PRIORITY.LOW
에서 charencode.py
__priority__ = PRIORITY.LOWEST
3. 함수 본체 패스, 참조하는 함수 의존성이라는 코드를 정의
DEF 종속성 () : 패스
4.라는 함수를 정의 탬퍼, 함수는 두 개의 변수, 페이로드를 수신하고, 페이로드를 처리하지 않은, 키 파라미터를 수신하는 ** kwargs로 - 배열의 값
우리는 페이로드를받은 후 처리 적절한 알고리즘을 수행 한 후, 반환 페이로드는 잘 처리 할 수 있습니다
공통 작성 및 예시에 따라, 다음과 같습니다 :
# !를 / usr / 빈 / ENV 파이썬 에서 lib.core.enums 가져 오기 우선 __priority__ = PRIORITY.LOW # 여기에서 당신은 당신의 자신의 우선 순위를 정의 할 수 있습니다 DEF 종속성 () : 패스 DEF 탬퍼 (페이로드, ** kwargs로) : 반환 #의 후 처리 문자열 페이로드
무단 변경 디렉토리에 작성하는하는 SQLMaps 수 있습니다 후