bon Le ordre

Flag: CYBN{ChUnK_0Rd3R_M@tT3R5}

Challenge

Description


Les méthodes les plus simples sont (parfois) les meilleures !

C'est pour ça que j'ai caché mon mot de passe de façon simple, mais dont seul moi connaît la combine, mouahaha

Solution

Les fichiers PNG suivent un format précis qui utilisent des chunks. Chaque chunk à un rôle précis, et certains ont également un ordre précis.

Si l'on regarde l'ordre des chunks de l'image avec un site comme celui-ci, on peut voir qu'ils sont désordonnés.

Il faut mettre le IEND à la fin, et remettre les IDAT à la suite en veillant à ce que celui qui ne fait pas 4096 octets soit le dernier. De mon côté, j'ai skip le chunk TEXT puisqu'il ne sert à rien.

On peut les remettre dans l'ordre avec TweakPNG ou en scriptant :

from PIL import Image
from io import BytesIO

with open('bon_Le_ordre.png', 'rb') as f:
  data = f.read()

new_data = data[:4191]        # Les premiers chunks
new_data += data[4382:8490]   # IDAT 4096 bytes
new_data += data[8502:12610]  # IDAT 4096 bytes
new_data += data[12706:]      # IDAT 4096 bytes
new_data += data[4191:4382]   # IDAT 179 bytes
new_data += data[8490:8502]   # IEND

Image.open(BytesIO(new_data)).show()

Dernière mise à jour

Cet article vous a-t-il été utile ?