Ce défi nécessite des compétences à la fois en développement d'exploits, en ingénierie inverse et en écriture de scripts à l'aide de Python. Dans ce défi, nous avons obtenu un fichier nommé

"bébé-6971f0aeb454444a72cb5b7ac92524cd945812c2.tgz"

Remarque : vous pouvez consulter la solution ici

Obtenir les notes du certificat OSCP

Après avoir extrait ce fichier, deux fichiers nous seront présentés ; « bébé » et « libc.so ». Le fichier ciblé que nous sommes amenés à exploiter est « baby ». Comme nous avons l'habitude de le faire lors de l'analyse et de l'inversion de binaires et de fichiers, en particulier dans l'environnement Linux 32 et 64 bits, nous aimerions obtenir des informations sur le fichier.

Comme le montre l'image, nous avons un fichier DLL qui doit être vérifié par rapport aux mesures de sécurité activées. Nous utiliserons un outil appelé « checks.sh » développé par « slimm609 ».

Comme nous le voyons ci-dessus, PIE et NX sont activés, ce qui signifie que nous ne pouvons pas écraser EIP en utilisant le stack over flow simplement parce que ce fichier a ASLR et DEP activés, randomisant ainsi EIP à chaque fois. Nous devrions donc divulguer certains pointeurs et adresses en vérifiant s'il existe une probabilité de vulnérabilité de « chaîne de format », puis nous en tirerons parti pour tirer parti de l'adresse de base de la libc et utiliserons ces informations pour construire une chaîne ROP afin de contourner DEP et ASLR dans afin de laisser tomber notre shell et de démarrer le système. Tout d'abord, permettez-moi de vous montrer quelques approches sur la façon de rechercher des gadgets ROP et de les obtenir. Si vous avez un fichier exécutable, utilisez le débogueur d'immunité et utilisez le plugin « mona » développé par « corelanc »

Utilisez la commande suivante dans le débogueur d'immunité pour obtenir les gadgets ROP dans un fichier « rop.txt » séparé

Modules !mona

!mona ropfunc -m some.dll -cpb '\x00\x09\x0a'

Désormais, « some.dll » dans la commande est une DLL qui n'a pas de rebase, non-ASLR et aucun mauvais caractère pour garantir que les chaînes ROP générées sont appropriées et efficaces pour mener l'attaque.

Maintenant, dans notre cas, nous pouvons utiliser edb-debugger avec le plugin ROP pour les obtenir. Fondamentalement, les chaînes ROP se terminent par « RET »

Maintenant la partie intéressante qui est le script python

Exécutons maintenant notre script python pwn.py pour voir si nous obtenons le shell

Et nous comprenons

A propos de l'Auteur

Je crée des notes de cybersécurité, des notes de marketing numérique et des cours en ligne. Je fournis également des conseils en marketing numérique, y compris, mais sans s'y limiter, le référencement, les publicités Google et Meta et l'administration CRM.

Voir les Articles