
Dans cet article, nous rappelons les collisions dans les fonctions de hachage et résolvons la deuxième tâche à partir du site
pwnable.kr .
Information organisationnelleSurtout 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.
Collisions de la fonction de hachage
Une collision de fonctions de hachage est une telle paire de blocs
x et
y , le résultat de la
fonction de hachage hash () d'où résulte le même bloc
z .
hachage (x) = hachage (y) = zLes collisions sont possibles pour absolument n'importe quelle fonction de hachage, car l'ensemble des entrées est beaucoup plus grand que l'ensemble des sorties de la fonction de hachage.

Par conséquent, la stabilité de la fonction de hachage est déterminée par trois caractéristiques:
- irréversibilité - l'incapacité de récupérer un message par hachage;
- résistance aux collisions du premier type - pour un seul message, il est impossible de trouver un deuxième message qui donnera le même hachage avec le premier;
- résistance aux collisions du deuxième type - vous ne pouvez pas récupérer une paire de messages dont le hachage sera le même.
Solution de travail de collision
Nous cliquons sur la deuxième icône avec la collision de signature, et on nous dit que nous devons nous connecter via SSH avec le mot de passe invité.

Une fois connecté, nous voyons la bannière correspondante.

Voyons quels fichiers se trouvent sur le serveur, ainsi que les droits dont nous disposons.
ls -l

Ainsi, nous pouvons lire le code source du programme, car il y a un droit de lecture pour tout le monde, et exécuter le programme col avec les droits du propriétaire (le bit collant est défini). Regardons le résultat du code.

Il résulte du code que le programme prend une chaîne de 20 caractères comme paramètre, la transmet à une fonction qui calcule le hachage et le compare avec la valeur de référence.


À l'intérieur de la fonction, notre chaîne est divisée en 5 blocs de 4 octets, qui sont convertis en nombres, après quoi ces nombres sont additionnés. Ainsi, nous avons besoin de 5 chiffres, qui au total donneront 0x21dd09ec. Répondez à la condition: 0xd1d905e8 et 0x01010101.

Vous devez maintenant passer des caractères non imprimables à la ligne de commande en tant que paramètre du programme. Pour ce faire, nous utilisons la syntaxe bash et l'interpréteur python. Il est important de noter que lorsque dans la mémoire de l'ordinateur ces numéros seront stockés dans l'ordre inverse, nous les retournerons donc.
./col $(python - “print('\x01\x01\x01\x01'*4 + '\xe8\x05\xd9\x1d')”)

En conséquence, nous obtenons trois points.

Nous avons maintenant examiné un exemple très simple de collision, et dans le prochain article, nous allons résoudre la troisième tâche et analyser une vulnérabilité telle qu'un débordement de tampon sur la pile. Rendez-vous dans les articles suivants.
Nous sommes dans un canal de télégramme: un
canal dans Telegram .