¿Cómo demuestro una inyección de SQL de segundo orden?

Así que he estado intentando replicar una inyección de SQL de segundo orden. Aquí hay una plantilla de ejemplo de dos sitios basados ​​en PHP que he preparado. Vamos a llamarlo un formulario de registro de votantes. Un usuario puede registrarse y luego puede verificar si usted es un votante registrado o no.

insert.php

<?php

$db_selected = mysql_select_db('canada',$conn);
if (!db_selected)
    die("can't use mysql: ". mysql_error());

$sql_statement = "INSERT into canada (UserID,FirstName,LastName,Age,State,Town)
                    values ('".mysql_real_escape_string($_REQUEST["UserID"])."',
                    '".mysql_real_escape_string($_REQUEST["FirstName"])."',
                    '".mysql_real_escape_string($_REQUEST["LastName"])."',
                    ".intval($_REQUEST["Age"]).",
                    '".mysql_real_escape_string($_REQUEST["State"])."',
                    '".mysql_real_escape_string($_REQUEST["Town"])."')";

echo "You ran the sql query=".$sql_statement."<br/>";
$qry = mysql_query($sql_statement,$conn) || die (mysql_error());
mysql_close($conn);
Echo "Data inserted successfully";
}
?>

select.php

<?php


$db_selected = mysql_select_db('canada', $conn);
if(!db_selected)
    die('Can\'t use mysql:' . mysql_error());
$sql = "SELECT * FROM canada WHERE UserID='".addslashes($_POST["UserID"])."'";
echo "You ran the sql query=".$sql."<br/>";
$result = mysql_query($sql,$conn);
$row=mysql_fetch_row($result);

$sql1 = "SELECT * FROM canada WHERE FirstName = '".$row[1]."'";
echo "The web application ran the sql query internally=" .$sql1. "<br/>";
$result1 = mysql_query($sql1, $conn);
$row1 = mysql_fetch_row($result1);

mysql_close($conn);
echo "<br><b><center>Database Output</center></b><br><br>";

echo "<br>$row1[1] $row1[2] , you are a voter! <br>";

echo "<b>VoterID: $row[0]</b><br>First Name: $row[1]<br>Last Name: $row[2]
    <br>Age: $row[3]<br>Town: $row[4]<br>State: $row[5]<br><hr><br>";
}
?>

Así que, a propósito, hice esto vulnerable para mostrar cómo funciona la inyección SQL de segundo orden, un usuario puede escribir un código en la sección de primer nombre (donde actualmente estoy atascado, he intentado de muchas maneras diferentes pero parece que no puedo obtenerlo). hacer cualquier cosa). Luego, cuando una persona desea activar el código que ha insertado en la sección de primer nombre, todo lo que necesita hacer es escribir el ID de usuario y se insertará el código.

Por ejemplo: escribiré en la página insert.php como: userid = 17

primer nombre = (necesito inyectar algo aquí)

apellido = ..

edad = ..

pueblo = ..

estado = ..

Luego, cuando compruebo mis detalles y escribo 17, se activará el script SQL inyectado. ¿Puedo obtener algunos ejemplos sobre qué tipo de vulnerabilidades puedo mostrar a través de esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta