Maison Opération et maintenance Sécurité L'idée du cryptage des signes de traitement sqlmap

L'idée du cryptage des signes de traitement sqlmap

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)
Copier après la connexion

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

Lidée du cryptage des signes de traitement sqlmapLidée du cryptage des signes de traitement sqlmap

使用SQLMAP进行测试,发现无法测试。
Lidée du cryptage des signes de traitement sqlmap于是我使用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()
Copier après la connexion

运行上面的脚本使用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
Copier après la connexion

Lidée du cryptage des signes de traitement sqlmap

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

Lidée du cryptage des signes de traitement sqlmap

Lidée du cryptage des signes de traitement sqlmap

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la fonction SIGN dans Excel pour déterminer le signe d'une valeur Comment utiliser la fonction SIGN dans Excel pour déterminer le signe d'une valeur May 07, 2023 pm 10:37 PM

La fonction SIGN est une fonction très utile intégrée à Microsoft Excel. En utilisant cette fonction, vous pouvez découvrir le signe d'un nombre. Autrement dit, si le nombre est positif. La fonction SIGN renvoie 1 si le nombre est positif, -1 si le nombre est négatif et zéro si le nombre est zéro. Bien que cela semble trop évident, si vous avez une grande colonne contenant de nombreux nombres et que vous souhaitez trouver le signe de tous les nombres, il est très utile d'utiliser la fonction SIGN et de faire le travail en quelques secondes. Dans cet article, nous expliquons 3 méthodes différentes pour utiliser facilement la fonction SIGN dans n'importe quel document Excel pour calculer le signe d'un nombre. Lisez la suite pour apprendre à maîtriser cette astuce intéressante. démarrer

Exemple d'analyse de l'injection automatisée SQLmap Exemple d'analyse de l'injection automatisée SQLmap May 13, 2023 pm 03:31 PM

Utilisez sqlmap pour automatiser l'injection dans dvwa, définissez le niveau dvwa sur bas, ouvrez SQLInjection (SQLInjection(Blind)) de dvwa, ouvrez le débogage du navigateur, entrez l'ID utilisateur et soumettez-le, et affichez les requêtes interceptées. Vous pouvez voir qu'il s'agit d'une requête GET, l'url "http://192.168.1.222:8089/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" On la met directement dans salmap pour le tester, utilisez le - u commande -u"http://192.168.1.22

Comment analyser les problèmes avec sqlmap Comment analyser les problèmes avec sqlmap May 27, 2023 pm 01:07 PM

0x00 Présentation Récemment, j'ai rencontré un phénomène étrange lors de l'utilisation des tests d'injection sqlmap. La version supérieure de sqlmap ne peut pas détecter l'injection, mais la version inférieure peut détecter l'injection et les données peuvent être épuisées, ce qui n'est pas un faux positif après. tests comparatifs et visualisation du code source de sqlmap, j'ai trouvé deux petits trous. Format du point d'injection de reproduction du scénario 0x01 : json..."whereparams":[{"name":"keyWord","value":"test"}]} Paramètres injectables : commande valuesqlmap : pythonsqlmap.py-rsqlpk.txt– flush -session-vvsqlmapv1.2.11 ne peut pas injecter de s

Comment analyser la défense contre les injections SQLMap et SQLi Comment analyser la défense contre les injections SQLMap et SQLi May 11, 2023 pm 06:37 PM

Première partie : Utilisation de Sqlmap 1.1 Introduction à sqlmap 1. J'ai mentionné quelques instructions de base sur l'injection SQL, mais l'injection manuelle est très gênante. Nous pouvons utiliser sqlmap, un puissant outil d'injection SQL, pour obtenir des données. # sqlmap est un outil de test d'intrusion open source qui peut détecter et exploiter automatiquement les vulnérabilités d'injection SQL et les serveurs connectés à la base de données. Il dispose d'un moteur de détection très puissant, d'un testeur d'intrusion doté de multiples fonctionnalités, d'un accès au système de fichiers sous-jacent via l'empreinte digitale de la base de données et l'exécution de commandes via une connexion hors bande. Site officiel : sqlmap.org(2)#Bases de données prises en charge : MySQL, Oracle, PostgreS

Qu'est-ce que le proxy en mode oignon de SQLMAP ? Qu'est-ce que le proxy en mode oignon de SQLMAP ? May 26, 2023 am 09:56 AM

Parce qu'il est nécessaire d'effectuer des tests d'intrusion sur les sites Web externes, la plupart des sites Web disposent d'un contrôle de fréquence d'accès. Une fois cette fréquence dépassée, l'IP sera directement bannie. Surtout lorsque SQLMAP est en cours d'exécution, il est encore plus "tante rouge", et il se terminera avec une erreur avant la fin de l'exécution de SQLMAP. J'ai donc commencé à étudier le mode proxy de SQLMAP. SQLMAP a deux modes proxy, l'un est un proxy normal (proxy HTTP) et l'autre est un proxy oignon. Au départ, je voulais écrire sur l'application des agents ordinaires, mais Baidu a vu que cet article était suffisamment détaillé et a arrêté de dire des bêtises. Extension Sqlmap - Implémentation d'un pool de proxy IP externe Concentrons-nous sur le proxy onion Au début, lorsque l'onion était utilisé directement pour l'injection, il n'y avait pas de rapport « tante rouge ». Plus tard, à mesure que le nombre de sites Web pénétrés augmentait,

Comment implémenter l'analyse de l'injection temporelle sqlmap Comment implémenter l'analyse de l'injection temporelle sqlmap May 12, 2023 pm 12:10 PM

1. Préface Comment détecter l'injection SQL ? Ma réponse est la suivante : lorsque la partie A assure la sécurité, la détection des injections SQL est relativement facile à effectuer. 1) Détection d'injection d'erreur. 2) N'injectez pas de rapports d'erreurs booléennes car les faux positifs sont relativement élevés. 3) Effectuez une injection de temps basée sur le temps, l'exploitation et la maintenance des contacts pour créer des enregistrements de base de données de journaux lents, surveiller le sommeil et évaluer les mots clés. Vous pouvez ajouter le numéro d'identification de la tâche d'analyse à la virgule décimale du temps de sommeil pour faciliter le positionnement. (ps. Cette méthode peut trouver 99 % des injections SQL) Par conséquent, lorsque je fais une injection temporelle basée sur le temps, je limite très sévèrement l'erreur de temps. Cependant, @chengable effectue un travail lié à la sécurité dans la partie B, sur la base de t

Quelle est la méthode de configuration de l'injection sqlmap _dns ? Quelle est la méthode de configuration de l'injection sqlmap _dns ? May 12, 2023 pm 12:25 PM

Il y a trop peu d'articles sur l'injection DNS pour sqlmap sur Internet. Ils ne présentent que brièvement le paramètre --dns-domain. Les articles pratiques pertinents sont soit vagues, soit mentionnés d'un seul coup, ce qui prête à confusion (principalement malhonnête, la clé est). pas encore Big Boss). Puis j’ai recommencé en me référant aux méthodes sur Internet. Les éléments à préparer incluent un sqlmap, une injection aveugle de Windows, deux noms de domaine et un serveur réseau externe. Un jour, alors que je faisais quelque chose, je suis tombé sur une injection aveugle temporelle. Il s'agissait d'une machine Windows et je me suis souvenu de la méthode d'injection DNS. Avant de commencer, je prévois d'utiliser la commande --sql-shell de sqlmap pour tester la charge utile de l'injection DNS. Tout d'abord, accédez à burpsuite.

L'idée du cryptage des signes de traitement sqlmap L'idée du cryptage des signes de traitement sqlmap May 14, 2023 am 11:52 AM

Lorsque j'ai testé l'application de l'entreprise, j'ai découvert que nous avions ajouté un caractère 32 bits à tous les contenus des paramètres et finalement effectué le cryptage MD5. Étant donné que le processus de traitement de l'APP vérifie d'abord si le signe est correct, si la vérification de la signature échoue, il ne pourra pas du tout entrer dans la base de données. Afin d'utiliser SQLMAP pour le tester, j'ai écrit un script pour les données proxy après l'interception. le paquet de données, effectue le remplacement crypté de son contenu de paramètre et de 32 caractères. Remarque : ce script convient au système interne de l'entreprise, car vous pouvez connaître le processus de cryptage ou obtenir la méthode de cryptage du JS frontal ; Tout d'abord, j'ai écrit un programme utilisant Django pour simuler le système de l'entreprise. Le processus consistait à obtenir l'ID POST et le jeton, et à ajouter un mot crypté personnalisé.

See all articles