Résolution de problèmes avec pwnable.kr 25 - otp. Limite de taille de fichier Linux

image

Dans cet article, nous allons résoudre la 25e tâche à partir du site pwnable.kr .

Information organisationnelle
Surtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:

  • PWN;
  • cryptographie (Crypto);
  • technologies de réseau (réseau);
  • reverse (Reverse Engineering);
  • stéganographie (Stegano);
  • recherche et exploitation des vulnérabilités WEB.

En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et réseaux locaux, réalisation de pentests et écriture d'exploits.

Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une chaîne dans Telegram et un groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations personnelles et répondrai à tout le monde .

Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.

Otp job solution


Nous continuons la deuxième section. Je dirai tout de suite que c'est plus difficile que le premier, mais cette fois ils nous fournissent le code source du programme. N'oubliez pas la discussion ici (https://t.me/RalfHackerPublicChat) et ici (https://t.me/RalfHackerChannel). Commençons.

Cliquez sur l'icône avec la signature otp. On nous donne l'adresse et le port de connexion.

image

Nous nous connectons et regardons autour du serveur.

image

Un drapeau que nous ne pouvons pas lire, un programme et son code source. Voyons la source.

image

Analysons-le. Le programme prend un mot de passe comme argument.

image

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

image

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

image

Pour une raison quelconque, le fichier créé lit la valeur et la compare avec le mot de passe entré.

image

C'est là que se trouve la vulnérabilité. Il consiste dans le stockage intermédiaire du numéro généré dans un fichier. Nous pouvons limiter la taille du fichier, par exemple, à 0, puis lors de l'écriture et de la lecture avec le mot de passe 0, cela sera comparé.

# ulimit -f 0 

image

Exécutez maintenant le programme.

image

Nous obtenons une erreur. Cela n'a pas d'importance, car il peut être traité en utilisant le même python.

 python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" 

image

Nous obtenons le drapeau et nos poumons 100 points. Et nous continuons: dans le prochain article, nous toucherons le Web. Vous pouvez nous rejoindre sur Telegram .

Source: https://habr.com/ru/post/fr471042/


All Articles