No puedo entender la sintaxis de la opción pcre de la regla SNORT "? P = nombre"

0

Al tratar de entender algunas líneas de reglas SNORT, encontré la siguiente sintaxis que no podía entender. No se pudo encontrar ninguna descripción en el manual (aunque hay que reconocer que todavía no lo he leído completamente).

Dos ejemplos con las partes en cuestión resaltadas.

From sid:17166  
pcre:"/(?P<var>\w+)\x2Ereplace\x28\s*(?P=var)\s*\x2C\s*(?P=var)\s*\x29/";
:      ^^^^^^^^^^^^                  ^^^^^^^^

From sid:29503  
pcre:"/removeChild\((?<element>\w{1,20})\).*(?P=element)\.getCharNumAtPosition/smi";
:                   ^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^

Parece que la parte "?" está conectada con el último uso del nombre como "? P = nombre". Pero, no es consistente (como se ve en los dos casos anteriores).

Referencias.
sid: 17166; referencia: bugtraq, 36343; referencia: cve, 2009-3075;
sid: 29503; referencia: bugtraq, 49213; referencia: cve, 2011-0084; referencia: url, osvdb.org / show / osvdb / 74581;

    
pregunta nik 09.06.2014 - 13:00
fuente

2 respuestas

2

(?P<var>\w+)

Cómo leer esta expresión:

'('        = Open matching group.
'?P<var>'  = call this matching group "var"
'\w+'      = one or more alphanumeric/underscore characters
')'        = close matching group.

La siguiente parte es simplemente pedir la referencia inversa nombrada:

(?P=var)

Para la siguiente pieza de sintaxis:

(?<element>\w{1,20})

'('          = open matching group.
'?<element>' = Name this matching group "element"
'\w{1,20}'   = match any alphanumeric or underscore a minimum of once, and a maximum of 20 times.
')'          = close matching group
    
respondido por el avgvstvs 09.06.2014 - 16:10
fuente
1

Que yo sepa, Snort sigue el estándar general PCRE. Puede leer más detalles aquí: enlace

    
respondido por el Anorov 09.06.2014 - 15:07
fuente

Lea otras preguntas en las etiquetas