XPATH injection
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-7ebaebfa37dac753bd916c91429befb49dfd6309%252Fimage%2520%281%29%2520%283%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cad6aeb3&sv=1)
Rejoignez le serveur HackenProof Discord pour communiquer avec des pirates expérimentés et des chasseurs de primes !
Perspectives de piratage Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
Actualités de piratage en temps réel Restez informé du monde du piratage en évolution rapide grâce à des actualités et des informations en temps réel
Dernières annonces Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
Rejoignez-nous sur Discord et commencez à collaborer avec les meilleurs pirates dès aujourd'hui !
Syntaxe de base
Une technique d'attaque connue sous le nom d'injection XPath est utilisée pour exploiter les applications qui forment des requêtes XPath (XML Path Language) basées sur l'entrée de l'utilisateur pour interroger ou naviguer dans des documents XML.
Noeuds décrits
Des expressions sont utilisées pour sélectionner différents noeuds dans un document XML. Ces expressions et leurs descriptions sont résumées ci-dessous :
nomdunoeud : Tous les noeuds portant le nom "nomdunoeud" sont sélectionnés.
/ : La sélection est faite à partir du noeud racine.
// : Les noeuds correspondant à la sélection à partir du noeud actuel sont sélectionnés, quel que soit leur emplacement dans le document.
. : Le noeud actuel est sélectionné.
.. : Le parent du noeud actuel est sélectionné.
@ : Les attributs sont sélectionnés.
Exemples XPath
Des exemples d'expressions de chemin et de leurs résultats incluent :
librairie : Tous les noeuds nommés "librairie" sont sélectionnés.
/librairie : L'élément racine librairie est sélectionné. Il est à noter qu'un chemin absolu vers un élément est représenté par un chemin commençant par un slash (/).
librairie/livre : Tous les éléments livre qui sont des enfants de librairie sont sélectionnés.
//livre : Tous les éléments livre du document sont sélectionnés, quel que soit leur emplacement.
librairie//livre : Tous les éléments livre qui sont des descendants de l'élément librairie sont sélectionnés, peu importe leur position sous l'élément librairie.
//@langue : Tous les attributs nommés langue sont sélectionnés.
Utilisation de prédicats
Les prédicats sont utilisés pour affiner les sélections :
/librairie/livre[1] : Le premier élément livre enfant de l'élément librairie est sélectionné. Une solution de contournement pour les versions d'IE de 5 à 9, qui indexent le premier noeud comme [0], consiste à définir la SelectionLanguage sur XPath via JavaScript.
/librairie/livre[dernier()] : Le dernier élément livre enfant de l'élément librairie est sélectionné.
/librairie/livre[dernier()-1] : Le dernier élément livre enfant de l'élément librairie est sélectionné.
/librairie/livre[position()<3] : Les deux premiers éléments livre enfants de l'élément librairie sont sélectionnés.
//titre[@langue] : Tous les éléments titre avec un attribut langue sont sélectionnés.
//titre[@langue='fr'] : Tous les éléments titre avec une valeur d'attribut "langue" de "fr" sont sélectionnés.
/librairie/livre[prix>35.00] : Tous les éléments livre de la librairie avec un prix supérieur à 35.00 sont sélectionnés.
/librairie/livre[prix>35.00]/titre : Tous les éléments titre des éléments livre de la librairie avec un prix supérieur à 35.00 sont sélectionnés.
Gestion des noeuds inconnus
Des jokers sont utilisés pour faire correspondre des noeuds inconnus :
* : Correspond à n'importe quel noeud élément.
@* : Correspond à n'importe quel noeud attribut.
node() : Correspond à n'importe quel noeud de n'importe quel type.
D'autres exemples incluent :
/librairie/* : Sélectionne tous les noeuds élément enfants de l'élément librairie.
//* : Sélectionne tous les éléments dans le document.
//titre[@*] : Sélectionne tous les éléments titre avec au moins un attribut de n'importe quel type.
Exemple
Accéder aux informations
Identifier et voler le schéma
Contournement de l'authentification
Exemple de requêtes:
Contournement OR dans l'utilisateur et le mot de passe (même valeur dans les deux)
Abus de l'injection de null
Double OU dans le nom d'utilisateur ou dans le mot de passe (est valide avec seulement 1 champ vulnérable)
IMPORTANT : Remarquez que "et" est la première opération effectuée.
Extraction de chaîne
La sortie contient des chaînes et l'utilisateur peut manipuler les valeurs pour effectuer des recherches :
Exploitation à l'aveugle
Obtenir la longueur d'une valeur et l'extraire par des comparaisons :
Exemple Python
Lire le fichier
Exploitation OOB
Outil automatique
Références
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-7ebaebfa37dac753bd916c91429befb49dfd6309%252Fimage%2520%281%29%2520%283%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cad6aeb3&sv=1)
Rejoignez le serveur HackenProof Discord pour communiquer avec des hackers expérimentés et des chasseurs de primes en bugs !
Perspectives de piratage Engagez-vous avec du contenu qui explore les défis et l'excitation du piratage
Actualités de piratage en temps réel Restez à jour avec le monde du piratage en évolution rapide grâce aux actualités et aux informations en temps réel
Dernières annonces Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
Rejoignez-nous sur Discord et commencez à collaborer avec les meilleurs hackers dès aujourd'hui !
Last updated