avant-propos
Il y a quelques jours, je prévoyais d'obtenir des points edusrc, donc j'allais utiliser le Nday que je n'avais pas brossé pour continuer à obtenir des points, et puis j'ai eu le cas d'aujourd'hui :
collecter des messages
Lorsque je creusais le certificat d'une école de sport auparavant, j'ai trouvé une faille dans les étapes de modification du mot de passe en modifiant le fichier html
Je suis donc prêt à étudier et cartographier cet atout et continuer à voir s'il peut être noté
Choisissez-en un à ouvrir :
Il n'y a pas d'image de fond, mais c'est toujours le même atout, car il y a un compte lors du test d'une académie sportive, vous pouvez donc entrer directement ce compte pour passer à l'opération suivante, mais cet atout n'a pas de compte, donc je prévois de collecter une carte d'étudiant
Pour vous aider à étudier la cybersécurité, vous pouvez recevoir gratuitement un ensemble complet d'informations :
① Carte mentale du parcours d'apprentissage et de croissance de la cybersécurité
② Plus de 60 boîtes à outils classiques de cybersécurité
③ Plus de 100 rapports d'analyse SRC
④ Plus de 150 livres électroniques sur les techniques d'attaque et de défense en matière de cybersécurité
⑤ Le guide d'examen de certification CISSP le plus faisant autorité + Banque de questions
⑥ Plus de 1800 pages de manuel de compétences pratiques CTF
⑦ Collection des dernières questions d'entretien des entreprises de sécurité réseau (y compris les réponses)
⑧ Guide de test de sécurité du client APP (Android + IOS)
Le numéro d'étudiant n'est rien, et alors que j'étais sur le point de penser à d'autres points d'entrée, j'ai soudainement découvert
L'exigence pour cette pièce est d'entrer les 5 derniers chiffres du numéro d'étudiant, et le numéro d'étudiant est généralement régulier, je suis donc allé générer un dictionnaire FUZZ
Le programme de sortie des dictionnaires de 00000 à 99999 en Python est :
dictionnaire = {} for i in range(100000): key = str(i).zfill(5) value = \"Valeur \" + key dictionary \[key\] = value with open(\' dict.txt\', \'w\') comme fichier : pour la clé, valeur dans le dictionnaire.items() : file.write (clé + \'\\n\')
Après avoir chargé le dictionnaire, vous devez régler l'heure
Enfin obtenu quelques comptes avec succès
EDUSRC n'accepte pas les vulnérabilités de dynamitage, donc cette carte d'étudiant ne peut pas être considérée comme une vulnérabilité, mais la carte d'étudiant est finalement sortie
Entrez ensuite directement le numéro d'étudiant à 5 chiffres de FUZZ
https://1.test.edu.cn/passworf/find1_html
Après que find1_html a été changé en find2_html
Entrez directement le mot de passe que nous voulons réinitialiser et connectez-vous en arrière-plan une fois le changement réussi :
Continuez à parcourir les points de fonction pour trouver des points décisifs :
Trouvé un point d'ajout actif
Il n'y a pas de point de téléchargement mais il y a une fonction de description. Essayez de construire directement la charge utile xss :
<Script>alerte("1)</Script>
XSS+1 stocké
Charge utile ici : <Script>alert("1)</Script>
By-pass avec étui
Plus tard, un autre point de téléchargement d'informations a été trouvé :
Ces quelques points sont transparents et n'ont pas ouvert BP, et puis je prévois d'ouvrir BP pour voir si je peux obtenir des percées
Cliquez sur le premier point sous le titre [Ajouter des informations sur le CV] dans ce bloc
On constate qu'il s'agit d'une interface d'édition d'informations, mais elle saute par une petite fenêtre, donc je ne l'ai pas remarqué lorsque j'ai ouvert BP pour capturer des paquets :
Après avoir cliqué sur Modifier le paquet de capture à droite :
Lorsque la valeur de l'identifiant est trouvée, fermez-la avec des guillemets simples pour afficher :
Côté navigateur :
Trouvé que l'instruction sql a été exécutée
Et s'est avéré être une requête GET :
Tirez donc le chemin de ce bloc vers le navigateur pour un accès direct
De cette façon, vous n'avez pas à vous soucier des formulaires anti-sqlmap, et c'est plus rapide sans emballer les paquets de données
Sqlmap a exécuté avec succès les données !
Injection SQL +1
Continuez ensuite vers [Inscription des membres]
Entourez directement la recherche de guillemets simples :
L'instruction de requête a été exécutée avec succès
F12 appelle le réseau et constate qu'il s'agit également d'une méthode de requête GET, copiez l'URL de la requête et affichez directement l'écho
Exécution directe de sqlmap
Injection SQL +2
Cliquez ensuite sur les trois mots [Administrateur] dans le coin supérieur droit
Au début, je n'ai pas trouvé que ces trois mots pouvaient être cliqués. Après avoir cliqué, j'ai trouvé le point de téléchargement de l'information :
Cette pièce peut télécharger des fichiers et essayer de télécharger d'abord un php
L'invite ne peut télécharger que les types de fichiers répertoriés ci-dessus. Lorsque j'étais sur le point de penser à d'autres moyens de le contourner, j'ai soudainement découvert que les types de fichiers autorisés à être téléchargés incluaient pdf, alors essayez de télécharger directement un pdf-xss :
Importez-le avec succès, puis essayez d'y accéder dans un navigateur :
Mais le navigateur indique qu'il n'y a pas de fichier, puis examine attentivement l'écho de téléchargement du fichier :
Le chemin de uploadfile/16893293978.pdf ici est suivi du paramètre ?value=, et une fois ce paramètre donné, un autre paramètre est suivi :
? file=url=uploadfile/16893293978.pdf, puis revenez aux paramètres dans le package de requête :
Trouvé qu'il y a un paramètre &field=url ici, essayez de changer le paramètre à 1
Le navigateur indique que "1" n'existe pas, donc c'est clair. Le paramètre qui doit être connecté après le paramètre &field= est le chemin après le téléchargement du fichier. Parce que nous entrons 1 dans ce bloc, le fichier 1 n'existe pas , donc l'écho NotFound est clair. Essayons donc ce fichier :
Emballage:
Déclenchez XSS avec succès
Magasin xss+2
Mais la tâche de cette pièce est getshell, alors continuez à essayer de télécharger des fichiers
Modifiez les informations MIME et contournez le segment php5, mais il indique toujours qu'il ne peut pas être téléchargé, et l'image est téléchargée mais ne peut pas être analysée
Ce téléchargement doit être écrit à mort, alors continuez à trouver d'autres percées, vérifiez les paramètres et trouvez qu'il y a "nom de fichier"
Paramètre de problème, ajoutez rapidement une commande de délai pour essayer :
`dormir 7`
Délai de réussite à l'écho :
Commande exécutée avec succès ! Approfondissement :
Commande curl pour sonder ngrok.io
Écho réussi !
Exécution de la commande +1, et enfin utiliser la commande correspondante pour obtenir le shell
Résumer
La difficulté globale est modérée, mais cette fois, il y a trop de fonctions d'arrière-plan dans le test, ce qui nécessite une observation et des tests minutieux. Une fois la collecte des informations d'arrière-plan terminée, la difficulté de Getshell diminue en un instant.