Non riesco a capire la sintassi dell'opzione per la regola pcre SNORT "? P = nome"

0

Mentre cercavo di capire alcune linee di regole SNORT, mi sono imbattuto nella seguente sintassi che non riuscivo a capire. Non ho trovato alcuna descrizione nel manuale (anche se devo ammettere che non l'ho ancora letto completamente).

Due esempi con le parti in questione evidenziate.

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";
:                   ^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^

Sembra che la parte "?" sia collegata a quest'ultimo uso del nome "? P = nome". Ma non è coerente (come si vede nei due casi sopra).

Riferimenti sid:. 17166; riferimento: Bugtraq, 36343; di riferimento: CVE, 2009-3075; sid: 29503; riferimento: Bugtraq, 49213; riferimento: cve, 2011-0084; di riferimento: url, osvdb.org / mostra / OSVDB / 74.581;

    
posta nik 09.06.2014 - 13:00
fonte

2 risposte

2

(?P<var>\w+)

Come leggere questa espressione:

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

La prossima parte chiede semplicemente il backreference denominato:

(?P=var)

Per la prossima sintassi:

(?<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
    
risposta data 09.06.2014 - 16:10
fonte
1

Per quanto ne so, Snort segue lo standard generale PCRE. Puoi leggere maggiori dettagli qui: link

    
risposta data 09.06.2014 - 15:07
fonte

Leggi altre domande sui tag