회피가 필요한 시나리오 식별
이 단계에서는 태퍼 스크립트가 왜 필요한지 이해하게 됩니다. 웹 애플리케이션은 일반적인 SQL 인젝션 패턴을 방지하기 위해 기본적인 필터를 사용하는 경우가 많습니다. 예를 들어, 필터는 공백을 차단하거나 다른 문자로 대체하거나, UNION 또는 SELECT와 같은 키워드를 차단할 수 있습니다. sqlmap의 기본 페이로드가 차단될 때, 이러한 필터를 우회하기 위해 페이로드를 수정해야 합니다.
사용자 입력에서 공백을 필터링하는 웹 애플리케이션의 가상 시나리오를 고려해 보세요. 만약 sqlmap이 ' OR 1=1--와 같은 페이로드를 주입하려고 하면, 필터는 이를 'OR1=1--로 변환하여 페이로드를 무효화할 수 있습니다. 태퍼 스크립트는 sqlmap이 이러한 제한을 우회할 수 있는 대체 페이로드를 생성하도록 돕습니다.
회피 기법 없이 기본적인 sqlmap 스캔을 시뮬레이션하기 위해 더미 URL 을 사용할 것입니다. 이는 나중에 태퍼 스크립트 사용 시와 사용하지 않을 때 생성되는 페이로드를 비교하는 데 도움이 될 것입니다.
기본 스캔을 더미 대상에 시작하려면 다음 sqlmap 명령을 실행하세요. 이 대상은 실제로 취약하지 않지만, sqlmap의 동작과 생성된 페이로드를 관찰할 수 있게 해줍니다.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --output-dir=/tmp/sqlmap_output_no_tamper
이 명령은 기본적인 SQL 인젝션 스캔을 시도합니다. --dump 옵션은 데이터를 덤프하는 데 사용되고, --batch는 비대화형 모드로 실행되며, --forms는 폼을 확인하고, --level 1 --risk 1은 탐지 수준과 위험도를 설정하며, --parse-errors는 오류 메시지를 파싱하고, --technique=U는 UNION 쿼리 SQL 인젝션을 지정하며, --eta는 예상 도착 시간을 표시하고, --output-dir은 출력 디렉토리를 지정합니다.
출력을 관찰하세요. 이 특정 명령이 제공된 URL 에서 취약점을 찾지 못할 수도 있지만 (이것은 일반적인 테스트 사이트이며 이 랩의 목적에 특별히 구성되지 않았기 때문입니다), 목표는 sqlmap의 초기 시도를 보고 이러한 시도가 때때로 필터에 의해 차단될 수 있음을 이해하는 것입니다.