> For the complete documentation index, see [llms.txt](https://seguridadweb101.rotasim.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://seguridadweb101.rotasim.com/file-inclusion/rfi.md).

# RFI

### Bajo <a href="#rfilow" id="rfilow"></a>

Volvemos a empezar y este caso vamos a inyectar un fichero remoto, como ejemplo vamos a usar google, como sabemos que carga lo que le pases por parámetros vamos a introducir la url completa y ver que sucede.

![](https://3525621465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LO_bMUDbVtKBBFu7a9W%2F-LO_d7O87VdsC0DsovRK%2F-LO_d9q6xUKYfAtsRWIK%2F1.png?generation=1539303592367621\&alt=media)

Como vemos nos carga google en nuestra web.

### Medio <a href="#rfimedium" id="rfimedium"></a>

Cambiamos de nivel y volvemos a probar el dominio de google, dejando de funcionar

![](https://3525621465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LO_bMUDbVtKBBFu7a9W%2F-LO_d7O87VdsC0DsovRK%2F-LO_d9q8_2iRTfxQvWji%2F1.png?generation=1539303591838439\&alt=media)

Si nos fijamos en el código nos damos cuenta de que tiene un srt\_replace como en LFI que nos impide usar http o https

```php
// Input validation 
$file = str_replace( array( "http://", "https://" ), "", $file );
```

Pero como str\_replace no es recursivo, podemos jugar con ello cambiando la manera de escribir el protocolo

```
htthttp://p://google.es
```

Lo que sucederá es que se eliminara el *http\://* dejando el que lo envuelve en su lugar, volviendo a funcionar el ataque.

![](https://3525621465-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LO_bMUDbVtKBBFu7a9W%2F-LO_d7O87VdsC0DsovRK%2F-LO_d9qA0oDF-7FZmBF-%2F2.png?generation=1539303591841866\&alt=media)

### Alto <a href="#rfihigh" id="rfihigh"></a>

En este caso no se puede resolver incluyendo una url, por lo que hay que usar otra vulnerabilidad como file upload y llamar al código desde ese fichero.
