Codice:
#importazione librerie
import httplib, urllib
import sys
import time
print "SQL Injection Scanner"
#impostazioni sito e link da controllare
sito = sys.argv[1]
#### hack = " fa una prova per sql injection posizionando le virgolette alla fine del link
hack = "'"
####
link = sys.argv[2]
#autenticazione
recv = link+hack
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
print ">Connessione in corso. . . "
time.sleep(1)
conn = httplib.HTTPConnection(sito)
print ">>>Connesso"
#controllo vulnerabilitÃ
def controllo():
info = "\n%s ->Vulnerabile in una MySQL Injection" % (sito+link)
err = "\n%s ->Non vulnerabile" % (sito+link)
time.sleep(1)
#se il sito era www.sito.it/ciao.php?a=1 viene testato con www.sito.it/ciao.php?a=1" ,se è vulnerabile da l'errore altrimenti non lo da.e gli errori che da sono questi nel data.find()
if data.find("Microsoft JET Database") != -1:
print info, ": Microsoft JET Database\n"
exit()
if data.find("Division by zero in") != -1:
print info, ": Division by zero\n"
exit()
if data.find("Warning") != -1:
print info, ": Warning\n"
exit()
if data.find("ODBC Microsoft Access Driver") != -1:
print info, ":ODBC Microsoft Access Driver\n"
exit()
if data.find("Microsoft OLE DB Provider") != -1:
print info, ":Microsoft OLE DB Provider\n"
exit()
if data.find("Error Executing Database Query") != -1:
print info, ":Error Executing Database Query\n"
exit()
else:
print err
conn.request("POST", recv, "we", headers)
response = conn.getresponse()
data = response.read()
controllo()
conn.close()
print "<<<Disconnessione in corso. . ."
time.sleep(1)
print "<<<Disconnesso"
questo dovrebbe vedere se un sito è vulnerabile a sql injection.
"Usage: python nomefile.py http://sito.com /link/da/controllare.php?id=33"
non funziona con tutti non capisco il perchè.