No podrás explotar la ejecución del código de esa manera. Su código es vulnerable a los scripts entre sitios (XSS), pero no a la ejecución del código. Para eso necesitarías algo como eval()
, o una llamada implícita de php más sutil.
Sin embargo, puede explotar XSS en el ejemplo anterior inyectando Javascript, intente algo como <script> alert(1) </script>
para su entrada de usuario y vea la ventana emergente en Javascript. :) Un atacante podría usar esto para pasar un enlace con el javascript del atacante a un usuario desprevenido que, cuando abre el enlace, ejecuta el javascript del atacante, posiblemente regalando al atacante algo de la interfaz de usuario de la aplicación o del lado del cliente. El atacante podría hacer cualquier cosa que Javascript pueda hacer, cuando se ejecuta en el navegador de un usuario en el contexto de la aplicación (es decir, se ejecuta en el origen de la aplicación).
Mucha más información sobre XSS es aquí por ejemplo.
Actualizar (explotando la ejecución del código)
Por lo tanto, no puede ejecutar PHP desde la entrada del usuario de esta manera. Para hacerlo vulnerable a la ejecución de código (es decir, para poder ejecutar PHP desde la entrada del usuario), debe usar una variable con la entrada del usuario en algo como eval()
, como por ejemplo <?php eval($search_location) ?>
en su ejemplo.
Otra forma típica en que una aplicación sería vulnerable a esto es include($_GET['myinclude'])
, en cuyo caso podría intentar proporcionar http://some.site.tld/yourscript.php
como myinclude
y ver cómo se carga y ejecuta en el servidor de aplicaciones.
Otro ejemplo más para hacer que ejecute el código php sería utilizar el modificador e
en una expresión regular con entrada de usuario, como se describe aquí .
Puede haber muchos más, pero simplemente imprimir una variable es "solo" XSS, no la ejecución del código (afortunadamente, dado que muchos sitios web son realmente vulnerables a XSS). :)