Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
collisions — Collisions de hachage et leurs exploitations | Kitploit
Outils/GitHubGitHub/decalage2/collisions
ExploitationAnalyse de HachageCryptographieAnalyse de BinairesApprentissage et Éducation
GitHubdecalage2/collisions

collisions

Collisions de hachage et leurs exploitations

Voir le dépôt
9129il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

TL;DR obtenir une collision MD5 de ces deux images est désormais(*) trivial et instantané.

Page MD5 sur Wikipédia ⟷ <a href=http://gunshowcomic.com/648>

Ne jouez pas avec le feu, ne vous fiez pas à MD5.

(*) Collisionner n'importe quelle paire de fichiers est possible depuis de nombreuses années, mais cela prend plusieurs heures à chaque fois, sans raccourci. Cette page fournit des astuces spécifiques aux formats de fichiers et des préfixes de collision précalculés pour rendre la collision instantanée. git clone. Exécutez le script. Terminé.

Collisions de hachage et exploitations

Par Ange Albertini et Marc Stevens.

  • Introduction
  • Statut
  • Attaques
    • Préfixe identique
      • FastColl (MD5)
      • UniColl (MD5)
      • Shattered (SHA1)
    • Collisions à préfixe choisi
      • HashClash (MD5)
      • Shambles (SHA1)
    • Résumé des attaques
  • Exploitations
    • Stratégie standard
      • JPG
        • scans personnalisés
      • PNG
        • incompatibilité
      • GIF
      • GZIP
      • Portable Executable
      • MP4 et autres
        • JPEG2000
      • PDF
        • JPG dans PDF
      • ZIP
        • Formats basés sur ZIP
    • Stratégies inhabituelles
      • MultiColls : chaîne de collisions multiples
      • Validité
      • PolyColls : collisions de différents types de fichiers
        • PE - JPG
        • PDF - PE
        • PDF - PNG
      • PileUps (multi-collision)
        • PE - PNG - MP4 - PDF
    • Cas d'utilisation
      • Il faut tous les collisionner !
      • Fichiers compromettants
    • Échecs
      • ELF
      • Mach-O
      • Classe Java
      • TAR
    • Résumé des exploitations
    • Fichiers de test
  • Références
  • Crédits
  • Conclusion

Introduction

L'objectif est d'explorer en profondeur les attaques existantes - et de montrer au passage à quel point MD5 est faible (collisions instantanées de n'importe quel JPG, PNG, PDF, MP4, PE...) - et aussi d'explorer en détail les formats de fichiers courants pour déterminer comment ils peuvent être exploités avec des attaques présentes ou futures.

En effet, la même astuce de format de fichier peut être utilisée sur plusieurs hashs (les mêmes astuces JPG ont été utilisées pour MD5, SHA-1 malveillant et SHA1), tant que les collisions suivent les mêmes motifs d'octets.

Ce document ne traite pas de nouvelles attaques (la plus récente a été documentée en 2012), mais de nouvelles formes d'exploitation des attaques existantes.

Statut

État actuel - en décembre 2018 - des attaques connues :

  • obtenir un fichier qui a le hash d'un autre fichier ou un hash donné : impossible

    • ce n'est toujours pas pratique même avec MD2.
    • cela fonctionne pour des hashs plus simples(*)
  • obtenir deux fichiers différents avec le même MD5 : instantané

    • exemples : 1 ⟷ 2
  • faire en sorte que deux fichiers arbitraires aient le même MD5 : quelques heures (72 heures.core)

    • exemples : 1 ⟷ 2
  • faire en sorte que deux fichiers arbitraires de formats spécifiques (PNG, JPG, PE...) aient le même MD5 : instantané

    • voir ci-dessous
  • obtenir deux fichiers différents avec le même SHA1 : 6500 ans.core

    • obtenir deux PDF différents avec le même SHA-1 pour afficher une image différente : instantané (les préfixes sont déjà calculés)

(*) exemple avec crypt - merci Sven !```

import crypt crypt.crypt("5dUD&66", "br") 'brokenOz4KxMc' crypt.crypt("O!>',%$", "br") 'brokenOz4KxMc'

# Attaques

MD5 et SHA1 fonctionnent avec des blocs de 64 octets.

Si deux contenus A et B ont le même hachage, alors ajouter le même contenu C aux deux conservera le même hachage.``` text
hash(A) = hash(B) -> hash(A + C) = hash(B + C)

Collisions work by inserting at a block boundary a number of computed collision blocks that depends on what came before in the file. These collision blocks are very random-looking with some minor differences (that follow a specific pattern for each attack) and they will introduce tiny differences while eventually getting hashes the same value after these blocks.

These differences are abused to craft valid files with specific properties.

File formats also work top-down, and most of them work by byte-level chunks.

Some 'comment' chunks can be inserted to align file chunks to block boundaries, to align specific structures to collision blocks differences, to hide the rest of the collision blocks randomness from the file parsers, and to hide otherwise valid content from the parser (so that it will see another content).

These 'comment' chunks are often not officially real comments: they are just used as data containers that are ignored by the parser (for example, PNG chunks with a lowercase-starting ID are ancillary, not critical).

Most of the time, a difference in the collision blocks is used to modify the length of a comment chunk, which is typically declared just before the data of this chunk: in the gap between the smaller and the longer version of this chunk, another comment chunk is declared to jump over one file's content A. After this file content A, just append another file content B.

Since file formats usually define a terminator that will make parsers stop after it, A will terminate parsing, which will make the appended content B ignored.

So typically at least two comments are needed - often three:

  1. alignment
  2. hide collision blocks
  3. hide one file content (for re-usable collisions)
Télécharger l’outil