Wie demonstriere ich eine SQL-Injection zweiter Ordnung?

Also habe ich versucht, eine SQL-Injection zweiter Ordnung zu replizieren. Hier ist eine Beispielvorlage von zwei PHP-basierten Sites, die ich vorbereitet habe. Nennen wir es einfach ein Wählerregistrierungsformular. Ein Benutzer kann sich registrieren und dann überprüfen, ob Sie ein registrierter Wähler sind oder nicht.

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>";
}
?>

Deshalb habe ich dies absichtlich verwundbar gemacht, um zu zeigen, wie SQL Injection zweiter Ordnung funktioniert. Ein Benutzer kann einen Code in den Vorname-Abschnitt eingeben (wo ich momentan feststecke, habe ich viele verschiedene Methoden ausprobiert, aber es scheint, dass ich nicht komme es, etwas zu tun). Wenn eine Person dann den Code aktivieren möchte, den sie in den Vorname-Abschnitt eingefügt hat, muss sie nur die Benutzer-ID eingeben, und der Code wird eingefügt.

Zum Beispiel: Ich werde in die Seite insert.php Folgendes eingeben: userid = 17

Vorname = (Ich muss hier etwas injizieren)

Nachname = ..

alter = ..

Stadt = ..

state = ..

Wenn ich dann nach meinen Details suche und 17 eingebe, wird das eingespeiste SQL-Skript aktiviert. Kann ich einige Beispiele dafür finden, welche Art von Schwachstellen ich dadurch aufzeigen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage