Die Schwachstelle auf Anwendungsebene, die es den Angreifern möglicherweise ermöglichen könnte, verschiedene Arten von böswilligen Angriffen durchzuführen, wie z. B. Path-Traversal-Angriffe, Code-Injection, Application Denial of Service, SQL-Injection usw., wird als PHP-Objektinjection oder PHP-Objektinjection bezeichnet PHP-Deserialisierung und die Ursache dieser Schwachstelle ist eine nicht ordnungsgemäß bereinigte Eingabe, die der Benutzer an die unserialize()-Funktion in PHP übermittelt, und die Angreifer können beliebige PHP-Objekte in eine Anwendung einschleusen, indem sie Zeichenfolgen übergeben, die ad hoc über die anfällige unserialize( )-Funktion und diese Schwachstelle in PHP führt zur Remote-Codeausführung.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Syntax
Die Syntax zum Deklarieren der Funktion serialize() in PHP lautet wie folgt:
unserialize(value);
wobei „Wert“ der zu deserialisierende Wert ist, der möglicherweise zu einer Objektinjektion führen kann.
Die Funktionsweise der Objektinjektion in PHP ist wie folgt:
Im Folgenden sind die Beispiele aufgeführt:
PHP-Programm zur Veranschaulichung der Objektinjektion, um einen bestimmten Wert als Folge von Bits umzuwandeln, sodass er überall gespeichert werden kann, und ihn dann mit der Funktion unserialize() zu deserialisieren:
Code:
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("Welcome", "to", "PHP")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Ausgabe:
Im obigen Programm wird das zu serialisierende Datenarray an die Serialisierungsfunktion übergeben und die zurückgegebene Zeichenfolge in einer Variablen namens „Wert“ gespeichert. Anschließend wird der von der Funktion serialize() zurückgegebene String als Ausgabe auf dem Bildschirm angezeigt. Dann werden die serialisierten Daten durch die Funktion unserialize geleitet und das Ergebnis wird in einer Variablen namens result gespeichert. Anschließend werden die desialisierten Daten als Ausgabe auf dem Bildschirm angezeigt. Die Ausgabe ist im Schnappschuss oben dargestellt.
PHP-Programm zur Veranschaulichung der Objektinjektion, um einen bestimmten Wert als Folge von Bits umzuwandeln, sodass er überall gespeichert werden kann, und ihn dann mit der Funktion unserialize() zu deserialisieren:
Code:
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("Learning", "is", "fun")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Ausgabe:
Im obigen Programm wird das zu serialisierende Datenarray an die Serialisierungsfunktion übergeben und die zurückgegebene Zeichenfolge in einer Variablen namens „Wert“ gespeichert. Anschließend wird der von der Funktion serialize() zurückgegebene String als Ausgabe auf dem Bildschirm angezeigt. Dann werden die serialisierten Daten durch die Funktion unserialize geleitet und das Ergebnis wird in einer Variablen namens result gespeichert. Anschließend werden die desialisierten Daten als Ausgabe auf dem Bildschirm angezeigt. Die Ausgabe ist im Schnappschuss oben dargestellt.
PHP-Programm zur Veranschaulichung der Objektinjektion, um einen bestimmten Wert als Folge von Bits umzuwandeln, sodass er überall gespeichert werden kann, und ihn dann mit der Funktion unserialize() zu deserialisieren:
Code:
<html> <body> <?php #The array of data to be serialized is passed to the serialize function and the returned string is stored in a variable called value $value = serialize(array("We", "love", "India")); #The returned string from the serialize() function is displayed as the output on the screen echo "The data after serialization using serialize() function is as follows:\n"; echo $value; #the serialized data is passed through the unserialize function and the result is stroed in a variable called result $result = unserialize($value); echo "<br>"; #The unserialized data is displayed as the output on the screen echo "The data after deserialization using unserialize() function is as follows:\n"; echo "<br>"; var_dump($result); ?> </body> </html>
Ausgabe:
Im obigen Programm wird das zu serialisierende Datenarray an die Serialisierungsfunktion übergeben und die zurückgegebene Zeichenfolge in einer Variablen namens „Wert“ gespeichert. Anschließend wird der von der Funktion serialize() zurückgegebene String als Ausgabe auf dem Bildschirm angezeigt. Dann werden die serialisierten Daten durch die Funktion unserialize geleitet und das Ergebnis wird in einer Variablen namens result gespeichert. Anschließend werden die desialisierten Daten als Ausgabe auf dem Bildschirm angezeigt. Die Ausgabe ist im Schnappschuss oben dargestellt.
Das obige ist der detaillierte Inhalt vonPHP-Objektinjektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!