Ho uno script con questo codice:
$name = preg_replace('/[^a-z0-9_.]/', '', $_GET['name']);
$ _ OTTIENI ['name'] = ../../conf.php ma preg_replace ha filtrato la mia barra (/) e $ name sarà .... conf.php Posso bypassarlo?
Ho uno script con questo codice:
$name = preg_replace('/[^a-z0-9_.]/', '', $_GET['name']);
$ _ OTTIENI ['name'] = ../../conf.php ma preg_replace ha filtrato la mia barra (/) e $ name sarà .... conf.php Posso bypassarlo?
Probabilmente no. Questa è una regex di whitelist (il ^ è un no) che sostituisce tutto ciò che non è letteralmente a-z o 0-9 o underscore o punto con niente - lo rimuove.
Questo è in realtà il modo consigliato per farlo se puoi - essendo così restrittivo su ciò che è permesso, elimina i caratteri di controllo, le barre, l'escape (% o &), tutto ciò che potrebbe infrangerlo.
Il meglio che puoi fare è vedere "..", che potrebbe causare l'apertura della directory superiore e fornire alcune informazioni per te, ma probabilmente no.
Leggi altre domande sui tag php encryption attacks exploit xss