Maison >développement back-end >tutoriel php >Injection d'objets PHP

Injection d'objets PHP

王林
王林original
2024-08-29 12:36:32409parcourir

La vulnérabilité au niveau de l'application qui pourrait éventuellement permettre aux attaquants de tenter d'effectuer plusieurs types d'attaques malveillantes telles qu'une attaque par traversée de chemin, une injection de code, un déni de service d'application, une injection SQL, etc. est appelée injection d'objet PHP ou La désérialisation PHP et la cause de cette vulnérabilité sont une entrée mal nettoyée fournie par l'utilisateur à la fonction unserialize() en PHP et les attaquants peuvent injecter des objets PHP arbitraires dans une application en passant des chaînes qui sont sérialisées ad hoc via le vulnérable unserialize( ) et cette vulnérabilité dans PHP conduit à l'exécution de code à distance.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Syntaxe

La syntaxe pour déclarer la fonction serialize() en PHP est la suivante :

unserialize(value);

où valeur est la valeur à désérialiser qui peut éventuellement conduire à une injection d'objet.

Fonctionnement de l'injection d'objets en PHP

Le fonctionnement de l'injection d'objets en PHP est le suivant :

  • La vulnérabilité au niveau de l'application qui pourrait éventuellement permettre aux attaquants de tenter d'effectuer plusieurs types d'attaques malveillantes telles qu'une attaque par traversée de chemin, une injection de code, un déni de service d'application, une injection SQL, etc. est appelée injection d'objet PHP. ou désérialisation PHP.
  • La cause de cette vulnérabilité est une entrée mal nettoyée fournie par l'utilisateur à la fonction unserialize() en PHP.
  • Les attaquants peuvent injecter des objets PHP arbitraires dans une application en transmettant des chaînes sérialisées ad hoc via la fonction vulnérable unserialize().
  • Cette vulnérabilité dans PHP conduit à l'exécution de code à distance.

Exemples d'injection d'objets PHP

Voici les exemples donnés ci-dessous :

Exemple n°1

Programme PHP pour illustrer l'injection d'objets pour convertir une valeur donnée sous forme de séquence de bits afin qu'elle puisse être stockée n'importe où, puis la désérialiser à l'aide de la fonction unserialize() :

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>

Sortie :

Injection d'objets PHP

Dans le programme ci-dessus, le tableau de données à sérialiser est transmis à la fonction de sérialisation et la chaîne renvoyée est stockée dans une variable appelée valeur. Ensuite, la chaîne renvoyée par la fonction serialize() est affichée comme sortie à l'écran. Ensuite, les données sérialisées sont transmises via la fonction de désérialisation et le résultat est stocké dans une variable appelée résultat. Ensuite, les données non sérialisées sont affichées comme sortie à l'écran. Le résultat est affiché dans l'instantané ci-dessus.

Exemple n°2

Programme PHP pour illustrer l'injection d'objets pour convertir une valeur donnée sous forme de séquence de bits afin qu'elle puisse être stockée n'importe où, puis la désérialiser à l'aide de la fonction unserialize() :

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>

Sortie :

Injection d'objets PHP

Dans le programme ci-dessus, le tableau de données à sérialiser est transmis à la fonction de sérialisation et la chaîne renvoyée est stockée dans une variable appelée valeur. Ensuite, la chaîne renvoyée par la fonction serialize() est affichée comme sortie à l'écran. Ensuite, les données sérialisées sont transmises via la fonction de désérialisation et le résultat est stocké dans une variable appelée résultat. Ensuite, les données non sérialisées sont affichées comme sortie à l'écran. Le résultat est affiché dans l'instantané ci-dessus.

Exemple #3

Programme PHP pour illustrer l'injection d'objets pour convertir une valeur donnée sous forme de séquence de bits afin qu'elle puisse être stockée n'importe où, puis la désérialiser à l'aide de la fonction unserialize() :

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>

Sortie :

Injection d'objets PHP

Dans le programme ci-dessus, le tableau de données à sérialiser est transmis à la fonction de sérialisation et la chaîne renvoyée est stockée dans une variable appelée valeur. Ensuite, la chaîne renvoyée par la fonction serialize() est affichée comme sortie à l'écran. Ensuite, les données sérialisées sont transmises via la fonction de désérialisation et le résultat est stocké dans une variable appelée résultat. Ensuite, les données non sérialisées sont affichées comme sortie à l'écran. Le résultat est affiché dans l'instantané ci-dessus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Objet en PHPArticle suivant:Objet en PHP