[Duda] ReDos(Regular expression Denial of Service) que causa en PHP

Iniciado por ~ Yoya ~, 23 Diciembre 2010, 22:32 PM

0 Miembros y 1 Visitante están viendo este tema.

~ Yoya ~

Buenas, cuando intento causar Dos en javascript mediante expresiones regulares causa un DoS
Código (javascript) [Seleccionar]
var a = '11111111111111111111111111111111111a';
if(/^(\d+)+$/.test(a)){alert(1);}


Pero en PHP no causa Dos y estoy tratando de reproducir lo que sirdarckcat escribió y nada
Cita de: http://foro.elhacker.net/nivel_web/hackea_a_elhackernet_finalizado_ganador_yasion-t275475.0.html;msg1357128#msg1357128en PHP, PREG va a suspender la ejecucion despues de N iteraciones y alterara la memoria donde esta almacenada la variable de tal forma, que se borraran los ultimos 3 bytes dentro de esta.

Por defecto en PHP el limite de marcha atras es de 100,000
pcre.backtrack_limit

Código (php) [Seleccionar]
<?php

$a 
str_repeat(1,16);
$a .= 'a';

echo 
"La longitud es de ".strlen($a). "<br>";
if(
preg_match("/^(\d+)+$/",$a));
echo 
"La longitud es de ".strlen($a). "<br>";

if (
preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
    echo 
'Se ah exedido el limite<br>';
}
?>


Salida:
La longitud es de 17
La longitud es de 17
Se ah exedido el limite


La longitud de la variable no se artera ni nada similar...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

sirdarckcat

era algo especifico de la expresion regular que hacia que php borrara esos ultimos caracteres.. habria que debugear el estado en el que se suspende otra vez.

~ Yoya ~

Bueno algo eh leído en la documentación oficial de PCRE, de momento me conformo con lo que eh leído...

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Castg!

yoya, estas leyendo algo en especial sobre el tema? tenes algo por ahi de preferencia en español?
yo estuve leyendo lo de owasp, pero es un tema jodido

~ Yoya ~

http://n3t-datagrams.net/papers/reDOS-n3t-datagrams-by-SH4V.pdf

Esta en español y muy buen explicado, te recomiendo que tomes una hoja y lápiz para entenderlo.

Si tienes dudas ps posteas en este mismo POST.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.