Médecine légale, injection SQL et chat endurci: analyse de la tùche n ° 3 de l'étape en ligne NeoQUEST-2020



Aujourd'hui, nous allons considérer la tùche la plus controversée de NeoQUEST-2020 : sa premiÚre partie est championne du nombre de participants qui l'ont franchie, et la deuxiÚme partie n'a obéi qu'à quelques-uns. Qui a t-il de si spécial à propos de lui? Comprenez la coupe!


Avez-vous dĂ©jĂ  dĂ» enquĂȘter sur un vidage de RAM? Savez-vous combien de choses intĂ©ressantes vous pouvez en tirer? (spoiler: tout, y compris les rĂ©sultats des scripts en cours d'exĂ©cution, des photos rĂ©centes, ainsi que l'historique du navigateur).
Qu'en est-il des injections SQL exotiques? Vous téléchargez une certaine image sur le site et vous recevez des informations d'une base de données fermée - n'est-ce pas un crime idéal?
Dans la premiÚre partie de l'article, nous examinerons les outils pour analyser le vidage de la mémoire et apprendre comment extraire les informations dont nous avons besoin à partir de là, et dans la deuxiÚme partie de l'article, nous montrerons clairement le processus de manipulation des balises d'image pour une injection délicate :)

Alors, la tùche consiste à télécharger l' archive, qui contient un fichier binaire de 1 Go avec le nom parlant memdump.bin, sur la base duquel nous pouvons supposer qu'il s'agit d'un vidage de RAM. Nous utiliserons le cadre de volatilité pour ses recherches . Volatility prend en charge divers plugins qui facilitent la recherche et l'extraction du vidage de diverses informations utiles pour faire chanter un analyste. Tout d'abord, utilisez la commande imageinfo et obtenez des informations sur le vidage:



A en juger par la sortie de la commande imageinfo, nous avons affaire Ă  un vidage de la mĂ©moire de Windows 7. Ensuite, nous allons examiner la liste des processus en cours d'exĂ©cution dans le systĂšme au moment oĂč le vidage a Ă©tĂ© supprimĂ© Ă  l'aide de la commande pslist:



Dans cette liste, vous pouvez voir plusieurs processus intéressants. Commençons l'étude avec le processus chrome.exe - vous pouvez toujours trouver quelque chose d'intrigant dans le navigateur. Il existe des plugins supplémentaires pour la volatilité qui automatisent l'extraction d'informations des processus. Par exemple, le plugin chromehistory nous permettra d'extraire l'historique de visite d'un navigateur à partir d'un vidage de RAM:



Dans l'histoire de chrome, plusieurs choses intĂ©ressantes peuvent ĂȘtre remarquĂ©es Ă  la fois. Tout d'abord, un lien vers la deuxiĂšme partie de la mission, ainsi que des requĂȘtes de recherche sur les mĂ©tadonnĂ©es dans les images PNG, ce qui est Ă©galement un indice pour la deuxiĂšme partie, mais nous y reviendrons plus tard. Au stade actuel, nous sommes intĂ©ressĂ©s par les demandes de code promotionnel pour une remise sur le site et les fichiers pdf, qui suggĂšrent l'objet de recherches supplĂ©mentaires (l'exĂ©cution d'Acrobat Reader`a peut Ă©galement nous inciter Ă  le faire). Essayons de trouver des documents pdf dans un vidage en utilisant la commande filescan:



Bonne chance! Il semble qu'il y ait du promo.pdf dans le vidage. Essayons de le tirer en utilisant la commande dumpfiles:



À ce stade, des difficultĂ©s mineures peuvent survenir du fait que certains visualiseurs de documents pdf peuvent ne pas reconnaĂźtre le fichier qui vient d'ĂȘtre extrait (il vous suffit de supprimer les octets supplĂ©mentaires Ă  la fin du fichier). Mais avons-nous vraiment peur de quelques octets supplĂ©mentaires? :) Au final, ouvrez le document et voyez le code QR, aprĂšs avoir lu lequel, nous obtenons le drapeau de la premiĂšre partie de la tĂąche (et en mĂȘme temps le code promotionnel pour recevoir un cadeau de l'Ă©quipe NeoQUEST - nous offrons des prix mĂ©morables tous les participants qui ont terminĂ© au moins une tĂąche!).



Ensuite, essayez d'obtenir le deuxiĂšme drapeau. Nous revenons sur le site dont le lien a Ă©tĂ© trouvĂ© dans l'historique du navigateur. Pour accĂ©der au site, vous devez entrer un code promotionnel. Nous rappelons l'historique de recherche dans le navigateur et la description du document lui-mĂȘme (UTILISER CECI POUR JOINDRE), Ă  partir de laquelle nous pouvons supposer que le premier indicateur est le code promotionnel dont nous avons besoin. Nous le saisissons sur le terrain et arrivons sur le site oĂč l'on nous propose de tĂ©lĂ©charger une photo: Ă  en



juger par la frĂ©quence de blocage du site, nos participants ont dĂ©cidĂ© de vĂ©rifier expĂ©rimentalement le chargement de tous les types de documents possibles. Un certain temps plus tard, nous comprenons que seules les images PNG peuvent ĂȘtre tĂ©lĂ©chargĂ©es sur le site. Le prochain casse-tĂȘte est le message «Pas assez de donnĂ©es pour stocker cette image, dĂ©solĂ©!», Qui se produit lorsque vous essayez de tĂ©lĂ©charger une image.

Revenant Ă  l'historique du navigateur, nous rappelons les demandes du formulaire «ajouter des mĂ©tadonnĂ©es au fichier png». En utilisant des infĂ©rences simples, nous concluons que, trĂšs probablement, certaines valeurs doivent ĂȘtre saisies dans les mĂ©tadonnĂ©es pour tĂ©lĂ©charger une image sur un site. Vous pouvez commencer par Ă©tudier le format PNG (pour une description, par exemple, cliquez ici ). Tout d'abord, vĂ©rifiez la liste des mots clĂ©s standard pour les images PNG de mĂ©tadonnĂ©es, par exemple: "Auteur", "Description", etc. En utilisant, par exemple, l'utilitaire de conversion de l'ensemble ImageMagick, ajoutez des mĂ©tadonnĂ©es Ă  l'image de test:

convert test.png -set 'Title' '1' -set 'Author' '2' -set 'Description' '3' -set 'Copyright' '4 '-set' Creation Time '' 5 '-set' Software '' 6 '-set' Clause de non-responsabilité '' 7 '-set 'Avertissement' '8' -set 'Source' '9' -set 'Comment' '0' out.png

Nous essayons de télécharger l'image résultante sur le site et apprécions le succÚs:



Il s'avÚre que les champs de métadonnées nécessaires sont Titre, Description, Auteur et Copyright.
D'ailleurs, un indice pour cela peut Ă©galement ĂȘtre trouvĂ© dans le vidage de la mĂ©moire: vous pouvez trouver la mention du fichier mr_cat.png en utilisant la volatilitĂ©.



Nos participants ont décidé que c'était avec l'aide de M. Cat qu'il fallait injecter le site (beaucoup de messages sont venus à notre courrier avec M. Cat dans une apparence compressée, inversée, réfléchie et autre inesthétique ), mais le chat n'a rien à voir avec ça! Il distrait simplement et fait allusion aux participants: bon, regardez-moi, il y a quelque chose d'intéressant à l'intérieur! A l'intérieur du dépotoir, l'image n'a été que partiellement conservée; cependant, dans ses résidus, vous pouvez remarquer les champs de métadonnées complétés nécessaires:



Allez-y: nous pouvons maintenant télécharger des fichiers sur le site; cependant, que donne-t-il et comment rechercher un drapeau? Il est logique de supposer qu'une fois que les métadonnées sont requises pour le téléchargement, il est possible qu'elles soient utilisées d'une maniÚre ou d'une autre pour stocker les fichiers téléchargés (par exemple, comme clés dans une base de données). Hourra! Nous approchons du dessert: nous devons vérifier sur le site la possibilité d'une injection SQL. Nous constatons que si l'un des paramÚtres est remplacé par un double guillemet ("), le site nous signalera une erreur au lieu de charger l'image:



Nous voyons maintenant la requĂȘte SQL elle-mĂȘme et comprenons quels champs nous pouvons utiliser afin de construire une injection pour extraire des donnĂ©es de la base de donnĂ©es utilisĂ©e. Quant Ă  l'emplacement du drapeau, dans ce cas, il est logique de vĂ©rifier la toute premiĂšre image qui a Ă©tĂ© tĂ©lĂ©chargĂ©e dans la base de donnĂ©es. De plus, pendant l'opĂ©ration d'injection, vous devez faire attention au fait que INSERT est exĂ©cutĂ© dans la demande. Cela nous oblige Ă  construire des requĂȘtes spĂ©cifiques car il est impossible d'effectuer explicitement une opĂ©ration SELECT Ă  partir de la mĂȘme table dans laquelle nous l'insĂ©rons en mĂȘme temps que l'opĂ©ration d'insertion (INSERT).

Faisons une demande avec laquelle nous extrayons la description de la premiÚre image de la base de données:

convert test1.png -set 'Title' '1' -set 'Author' '", (SELECT description FROM (SELECT * FROM picture) AS x limit 0,1)) - -' -set 'Description' '3' - set 'Copyright' '4' test.png

Téléchargez l'image résultante sur le site Web et obtenez la description dans le champ Copyright, qui est un indicateur:



Hourra, tùche terminée! Nous espérons que nous avons convaincu tout le monde de revérifier les entrées des utilisateurs pour la millioniÚme fois, et aussi de la garder en sécurité la prunelle de vos yeux de créer un vidage de votre RAM :)
Terminez l'article avec une citation des grands sages:


All Articles