
Dans cet article, nous allons résoudre le 25e exercice du site .
Informations organisationnellesSpécialement pour ceux qui souhaitent apprendre quelque chose de nouveau et se développer dans tous les domaines de la sécurité informatique, je vais écrire et parler des catégories suivantes :
- PWN;
- cryptographie (Crypto);
- technologies réseau (Network);
- reverse (Reverse Engineering);
- stéganographie (Stegano);
- recherche et exploitation des vulnérabilités WEB.
De plus, je partagerai ma expérience en criminalistique numérique, analyse des malwares et des firmwares, attaques sur les réseaux sans fil et les réseaux locaux, réalisation de pentests et rédaction d'exploits.
Pour que vous puissiez être au courant des nouveaux articles, logiciels et autres informations, j'ai créé et dans le domaine de la sécurité informatique. De plus, vos demandes personnelles, questions, suggestions et recommandations .
Toutes les informations sont présentées uniquement à des fins éducatives. L'auteur de ce document ne saurait être tenu responsable de tout dommage causé à quiconque résultant de l'utilisation des connaissances et des méthodes acquises par l'étude de ce document.
Solution de l'exercice otp
Nous continuons le deuxième chapitre. Je vous préviens tout de suite que c'est plus difficile que le premier, mais cette fois, nous n'avons pas le code source du programme. N'oubliez pas de participer à la discussion ici(https://t.me/RalfHackerPublicChat) et ici (https://t.me/RalfHackerChannel). Commençons.
Cliquez sur l'icône avec la légende otp. On nous donne une adresse et un port pour la connexion.

Nous nous connectons et faisons un tour sur le serveur.

Le drapeau que nous ne pouvons pas lire, le programme et son code source. Regardons le code source.

Nous l'analysons. Le programme prend le mot de passe comme argument.

Ensuite, 16 octets aléatoires sont enregistrés dans la variable otp.

Un fichier avec un nom aléatoire (les 8 premiers octets de otp) est créé dans le dossier tmp et y sont écrits 8 octets aléatoires (les 8 derniers octets de otp).

Pour une raison quelconque, la valeur du fichier créé est lue et comparée au mot de passe saisi.

C'est ici que se trouve la vulnérabilité. Elle réside dans la sauvegarde intermédiaire du nombre généré dans un fichier. Nous pouvons limiter la taille du fichier, par exemple à 0, alors lors de l'écriture et de la lecture avec le mot de passe, 0 sera comparé. On peut faire cela comme suit.
# ulimit -f 0 ![]()
Lançons maintenant le programme.
![]()
Nous obtenons une erreur. Pas de souci, elle peut être manipulée à l'aide de Python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" ![]()
Nous recevons le drapeau et nos 100 points faciles. Et nous continuons : dans le prochain article, nous aborderons le Web. Vous pouvez nous rejoindre sur .
Source : habr.com
