Table des matières
1. Préface
2. Analysez brièvement l'injection temporelle de sqlmap
3. Analysez le code source en profondeur
4. Fermeture
5. Déterminer s'il y a un retard
5.2 Méthode 2
Maison Opération et maintenance Sécurité 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
sqlmap time-based

1. Préface

Comment détecter l'injection SQL ?

Ma réponse est la suivante : en ce qui concerne la sécurité de la partie A, la détection des injections SQL est relativement facile à réaliser.

1) Détection d'erreur d'injection.

2) N'injectez pas de rapports d'erreurs booléens, 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. 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é sur la partie B, et l'injection de temps basée sur le temps n'est généralement pas possible. Il est entendu qu'il filtre principalement d'abord l'existence de points d'injection, puis détecte sqlmapapi.py. J'ai également utilisé sqlmap pour les tests plus tôt. Les problèmes que j'ai rencontrés étaient de nombreux faux positifs et un temps d'analyse long. Ensuite, j'ai essayé sqlmapapi.py. Le problème était que le temps d'analyse était trop long et qu'il ne prenait pas en charge l'injection au format json (détails). . Cependant, l'injection temporelle de sqlmap est relativement précise. Que faire si vous ne souhaitez pas utiliser sqlmapapi.py ? Ici, je vais supprimer la logique d'injection basée sur le temps de sqlmap.

2. Analysez brièvement l'injection temporelle de sqlmap

Plaintez-vous : le code de sqlmap n'est pas standardisé, moche et volumineux. Quelqu'un m'a déjà recommandé de lire le code source de sqlmap et d'en apprendre beaucoup. Maintenant que j'y pense, j'ai abandonné très tôt.

Donc, si vous êtes paresseux et que vous ne voulez pas regarder le code source, ajoutez --technique=T -v 3 et regardez d'abord la charge utile de détection sqlmap.

如何实现sqlmap time-based inject的分析

如何实现sqlmap time-based inject的分析

如何实现sqlmap time-based inject的分析

Il semble que j'ai été paresseux et que j'ai trouvé quelques moyens. Vous pouvez le voir sur la capture d'écran :

Tout d'abord, sqlmap a bourré la charge utile d'injection de sommeil :

Premier sommeil bourré (5) , après avoir constaté qu'il est exécuté ; sleep(0) est inséré, et enfin sleep(5) est inséré.

Ensuite, faites une supposition. L'idée générale de la vérification est de dormir(5) d'abord, puis de dormir(0) si le deuxième délai réussit. Si aucun délai n'est trouvé, continuez sleep(5). Si le délai réussit à nouveau, un rappel qu'il peut y avoir une injection apparaîtra :

如何实现sqlmap time-based inject的分析

Enfin, très intelligemment, sqlmap est utilisé pour éviter les faux positifs. si la condition de jugement est utilisée pour éliminer les faux positifs. À partir de la figure ci-dessus, vous pouvez voir que sqlmap teste deux fois si l'équation est vraie et deux fois si l'équation ne tient pas, les faux positifs sont jugés en fonction du deuxième délai.

3. Analysez le code source en profondeur

Retournez au code source et jetez un œil : sur la base de certains des mots-clés précédents, passons directement au code pour y jeter un œil. Par exemple, *apparaît être* apparaît avant la recherche. Voir le code de la première étape :

sqlmap/lib/controller/checks.py:

如何实现sqlmap time-based inject的分析

J'ai trouvé ici que c'est presque le. pareil à ce que j'avais deviné auparavant.

Recherchez où se trouve la charge utile, en particulier la charge utile avec la condition if. Utilisez une requête par mot-clé et trouvez-la ici :

sqlmap/xml/payloads/time_blind.xml:

如何实现sqlmap time-based inject的分析

Vous pouvez voir chacun si La charge utile de les conditions sont dans le champ vectoriel.

4. Fermeture

Fermer les caractères avant le point d'injection est la clé pour savoir s'il peut être injecté.

Observed tools/sqlmap/xml/boundaries.xml, nous devons donc également nous référer aux différentes situations de fermeture ici :

如何实现sqlmap time-based inject的分析

5. Déterminer s'il y a un retard

5.1 Méthode 1

Référez-vous à la Lors de l'injection awvs précédente, j'ai pensé à une méthode de détection plus facile à comprendre. Prenez le temps de consommation de 6 tests normaux sans charge utile injectée et calculez la valeur moyenne comme temps de requête natif (ori_time).

Lorsque l'heure d'injection est sleep(5), soustrayez ori_time de l'heure actuelle comme sleep_time. Si sleep_time est inférieur à 4, on considère que le délai ne s'est pas produit. (Considérant que ori_time est affecté par le réseau et devient plus grand, le seuil est ajusté à quatre secondes.)

Lorsque le temps d'injection est sleep(0), soustrayez ori_time de l'heure actuelle comme sleep_time. Si sleep_time est supérieur à 2, cela signifie qu'il y a une fausse alarme dans le délai.

5.2 Méthode 2

Regardez le code sqlmap, ils ont utilisé un problème mathématique que je ne comprends pas (détails)

Suivi : Request.queryPage --->wasLastResponseDelayed Vous pouvez voir que la logique est : Prenez le temps de consommation de 30 tests normaux sans charge utile injectée et mettez-les dans kb.responseTimes. Calculez l'écart type 30 fois sous forme d'écart et calculez le temps de réponse le plus lent en fonction de l'écart sous forme de lowerStdLimit :

如何实现sqlmap time-based inject的分析

Sa valeur est la moyenne de 30 fois plus TIME_STDEV_COEFF*écart type (écart). Quant à TIME_STDEV_COEFF, le régler sur 7 peut donner une précision de jugement de 99,9999999997440 %.

Enfin, jugez si le temps de consommation actuel de la requête est supérieur à lowerStdLimit. S'il est supérieur, cela signifie que le délai s'est produit, et s'il est inférieur, cela signifie qu'il n'y a pas de délai (en plus, lorsque lowerStdLimit. est inférieur à 0,5 seconde, lowerStdLimit prend 0,5 seconde).

L'émotion me dit que je devrais choisir la première méthode, et la rationalité me dit que je devrais choisir la deuxième méthode. J'ai quand même choisi la deuxième méthode et mesuré le point d'injection (détails). Une analyse très stable a trouvé des vulnérabilités d’injection.

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)

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é.

Comment utiliser sqlmapGetshell Comment utiliser sqlmapGetshell May 13, 2023 pm 06:25 PM

sqlmap lit et écrit des fichiers –file-read : lit les fichiers à partir du système de fichiers du système de gestion de base de données principal –file-write : modifie les fichiers locaux sur le système de fichiers du système de gestion de base de données principal (écrit à partir du système local) –file-dest : Le chemin absolu du fichier écrit par le système de gestion de base de données back-end (chemin cible d'écriture). Vous pouvez utiliser les commandes ci-dessus pour lire et écrire le fichier système après l'injection SQL, mais la condition préalable est que vous ayez besoin d'avoir lu et écrit. autorisations et être un administrateur de base de données, sinon les opérations de lecture et d'écriture ne peuvent pas être effectuées avec succès. En prenant DVWA comme exemple, construisez DVWA sous Kali pour lire et écrire des fichiers. Lire le fichier : Vérifiez les informations pertinentes dans PHPinfo, utilisez -file-r

See all articles