elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Recopilatorio de Filtros, Casting y Parsing para PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recopilatorio de Filtros, Casting y Parsing para PHP  (Leído 1,852 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Recopilatorio de Filtros, Casting y Parsing para PHP
« en: 21 Diciembre 2011, 18:40 pm »

Quiero comenzar abriendo este post para poder ir poniendo todos los cast o parser mas utiles para filtrar strings, objetos, etc de la mejor forma posible y no tener que andar buscando de un lugar para otro.

Información adicional de casting básico:
http://php.net/manual/es/language.types.type-juggling.php
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html


A veces necesitamos llamar a un archivo desde peticiones get o post y debemos evitar LFI, una forma es haciendo un file_exists() y preg match de esta forma:

Código
  1. <?php
  2. if(file_exists($file = './module/'.preg_replace('|[^A-Za-z0-9_\-]|i', '', $_GET['file']).'.php'))
  3. include($file);
  4. unset($file);
  5. ?>

El problema es que siempre queda la posibilidad de bypasear los strings o meterse donde uno no debe, talves un archivo restringido como llamar al index.php principal, por eso desde hace algún tiempo estoy utilizando algo muchisimo mas limpio y efectivo y evita el 100% de los ataques LFI y RFI:

Código
  1. <?php
  2. if(in_array(($file = './module/'.$_GET['file'].'.php'), glob('./module/*.php')))
  3. include($file);
  4. ?>

De esta forma la función glob() nos dará un array con todas las rutas que contengan un archivo php dentro del directorio módulos, asi que si tratamos de hacer un LFI nos dará negativo siempre:

Código
  1. <?php
  2. $files = glob('./module/*.php')
  3. echo './module/'.$_GET['file'].'.php es igual a '.$files[0].' ???';
  4. ?>

Citar
./module/../../../../config/config.php es igual a ./module/main.php ???


Siempre he visto en varios post dentro del foro sobre como saber si un string es una dirección e-mail o no, pues fácil:
Código
  1. filter_var('test@gmail.com', FILTER_VALIDATE_EMAIL)

Debuelve true o false.


Alguna ves has necesitado ingresar una string dentro de un tag <script> sin que te salga un xss?

Digamos que tengo esto:
Código
  1. <script>
  2. var test = '<?php echo addslashes(htmlspecialchars($_GET['test'], ENT_QUOTES)); ?>';
  3. </script>

Dejemne decirles que los que utilizan addslashes o htmlspecialchars están expuestos a un xss o a que simplemente no funcione siempre bién ya que addslashes y htmlspecialchars no filtran cosas como saltos de linea, parentesis y comentarios, por lo tanto con un simple %0a%0d puedes comenzar a inyectar código arbitrario.

Que hacemos en este caso?
Lo que google hace es pasar todo a unicode y los carácteres especiales quedan algo así: \u0010, pero yo lo hago de una forma mucho mas efectiva, limpia y con menos bites:

Código
  1. <script>
  2. var test = '<?php echo str_replace(array('+', '%'), array(' ', '\x'), urlencode($_GET['test'])); ?>';
  3. </script>

De esta forma todos los carácteres especiales incluyendo saltos de linea quedarán así:

Código
  1. <script>
  2. var test = '\x0a\x0cprueba de caracteres\x3c\x22';
  3. alert(test);
  4. </script>

La ventaja es que javascript interpreta de forma nativa los valores hexadecimales los pases a comillas simples o a comillas dobles asi que podrás seguirlo usando tan normal como siempre:

Código
  1. <div></div>
  2. <script>
  3. var test = '\x0a\x0cprueba de caracteres\x3c\x22';
  4. $('div').text(test);
  5. </script>


« Última modificación: 21 Diciembre 2011, 18:42 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
FILTROS Y ACCIONES PARA PHOTOSHOP
Diseño Gráfico
CLON-003 3 3,219 Último mensaje 4 Febrero 2006, 06:36 am
por + enrique ZP
Casting
Programación Visual Basic
TeKNo dUKe 0 1,224 Último mensaje 26 Junio 2008, 14:34 pm
por TeKNo dUKe
Que filtros usar en el wireshark para ver las claves
Hacking
chatarrero 5 21,152 Último mensaje 22 Diciembre 2009, 13:56 pm
por chatarrero
Hacking Wireless : Recopilatorio de manuales y utilidades para hackear claves...
Noticias
wolfbcn 1 8,090 Último mensaje 15 Marzo 2011, 21:50 pm
por Hurubnar
Problema con casting
Programación C/C++
Caster 7 3,024 Último mensaje 19 Junio 2013, 18:19 pm
por Caster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines