viernes, 17 de agosto de 2012

Enviar form con file_get_contents


Bienvenid@s, hoy vamos a ver como usar la función file_get_contents() de PHP, esta función permite obtener el contenido de un sitio web, también es posible enviar peticiones GET y POST, mediante cabeceras que pueden ser enviadas mediante la función stream_context_create.

Por ejemplo, puede haber una web X en la cual existe un formulario de inicio de sesión, estoy registrado y tengo los datos de acceso al sistema, lógicamente puedo acceder al sistema entrando directamente a la web X, pero yo quiero iniciar sesión desde mi servidor local y que me muestre el contenido del mismo tras haberlo hecho. PHP me ofrece la opción de hacerlo mediante file_get_contents, puedo indicarle la url donde realizará la petición y enviarle las cabeceras con los campos de acceso, todo correcto, también podría comprobar si ese sistema es vulnerable y no tiene límite de ping, es decir, puedo tener un diccionario con millones de passwords y mediante un búcle realizar peticiones constantes con cada password de la lista, suponiendo claro está que el nombre de usuario ya lo conozco o tengo.

file_get_contents también es muy utilizado por algunos bots caseros, que se dedican a buscar información como emails, enlaces, etc, ..., que van guardando en bases de datos, esta herramienta no es muy difícil de utilizar, tan sólo hace falta tener unos conceptos básicos de PHP y una idea clara de lo que se quiere hacer.

A continuación puedes ver un sencillo ejemplo en el cual se realiza una petición por el método post a un formulario ubicado en una web ...

 <?php
 
 //url donde se encuentra ubicado el form
$url = "http://www.ejemplo.com/login/index.php";

//Los datos a enviar cómo parámetros
$datos = array('usuario' => 'admin' ,
               'password' => 'password'
              );

//Indicamos que utilizamos el protocolo http, método post, cabecera de formulario, y los parámetros de la consulta.
         $opciones = array('http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($datos)
    ));

//flujo de opciones.
 $contexto  = stream_context_create($opciones);

//Solicitar el contenido
 $respuesta = file_get_contents($url, false, $contexto);

//Imprimimos la respuesta del servidor
echo $respuesta; 

?>




No hay comentarios: