Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: ~ Yoya ~ en 23 Diciembre 2010, 22:32 pm



Título: [Duda] ReDos(Regular expression Denial of Service) que causa en PHP
Publicado por: ~ Yoya ~ en 23 Diciembre 2010, 22:32 pm
Buenas, cuando intento causar Dos en javascript mediante expresiones regulares causa un DoS
Código
  1. var a = '11111111111111111111111111111111111a';
  2. if(/^(\d+)+$/.test(a)){alert(1);}
  3.  

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#msg1357128
en 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 (http://www.php.net/manual/es/pcre.configuration.php#ini.pcre.backtrack-limit)

Código
  1. <?php
  2.  
  3. $a = str_repeat(1,16);
  4. $a .= 'a';
  5.  
  6. echo "La longitud es de ".strlen($a). "<br>";
  7. if(preg_match("/^(\d+)+$/",$a));
  8. echo "La longitud es de ".strlen($a). "<br>";
  9.  
  10. if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
  11.    echo 'Se ah exedido el limite<br>';
  12. }
  13. ?>
  14.  
Salida:
Código:
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...


Título: Re: [Duda] ReDos(Regular expression Denial of Service) que causa en PHP
Publicado por: sirdarckcat en 29 Diciembre 2010, 00:28 am
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.


Título: Re: [Duda] ReDos(Regular expression Denial of Service) que causa en PHP
Publicado por: ~ Yoya ~ en 3 Enero 2011, 02:52 am
Bueno algo eh leído en la documentación oficial de PCRE, de momento me conformo con lo que eh leído...

Saludos.


Título: Re: [Duda] ReDos(Regular expression Denial of Service) que causa en PHP
Publicado por: Castg! en 10 Enero 2011, 01:53 am
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


Título: Re: [Duda] ReDos(Regular expression Denial of Service) que causa en PHP
Publicado por: ~ Yoya ~ en 10 Enero 2011, 22:12 pm
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.