Estoy tratando de aprender más sobre la explotación de PHP eval () y me encontré con este escenario:
<?php
$test = array();
$test[0] = "command0 ";
$test[1] = $_GET["cmd1"];
$test[2] = "command2 ";
$test[3] = "command3 ";
$params = "";
for ($i = 0; $i < count($test); $i++) {
$params .= "\$test[$i]";
}
echo $params;
echo "<br>";
$cmd = "echo \"" . $params . "\";";
echo $cmd;
echo "<br>";
eval($cmd);
?>
He intentado inyectar varias combinaciones de comillas dobles y barras invertidas en el parámetro $ _GET, pero no he tenido la oportunidad de romper la cadena $ cmd.
Más allá del error XSS, ¿es este fragmento de código vulnerable? ¿Se puede abusar de esto para la inyección de código PHP?