HEADER

Flag: FLAG{BR0KEN_HEADER?EASILY_FIXED}

Challenge

Description


Mon image est corrompue, pouvez-vous la réparer pour moi s'il vous plaît ?

Solution

Si l'on fait un hexdump du fichier, on voit que tous les octets du début sont à 0, ce qui n'est pas normal.

$ hexdump -C flag.txt

00000000   00 00 00 00 00 00 00 00 00 00 00 0D 49 48 44 52  ............IHDR
00000010   00 00 02 A1 00 00 00 B2 08 06 00 00 00 72 7F 16  ...¡...².....r.
00000020   42 00 00 00 04 73 42 49 54 08 08 08 08 7C 08 64  B....sBIT....|.d
00000030   88 00 00 00 19 74 45 58 74 53 6F 66 74 77 61 72  ....tEXtSoftwar
00000040   65 00 67 6E 6F 6D 65 2D 73 63 72 65 65 6E 73 68  e.gnome-screensh
00000050   6F 74 EF 03 BF 3E 00 00 00 33 69 54 58 74 43 72  otï.¿>...3iTXtCr
00000060   65 61 74 69 6F 6E 20 54 69 6D 65 00 00 00 00 00  eation Time....

On peut simplement prendre une image PNG de référence pour venir coller les bons octets à la place de ceux-ci.

flag = open('flag.png', 'rb').read()
sample = open('sample.png', 'rb').read()

# On voit que le début est différent
print(flag[:12].hex())    # 00000000000000000000000d
print(sample[:12].hex())  # 89504e470d0a1a0a0000000d

with open('flag_corrected.png', 'wb') as f:
  # On prend les 12 premiers octets d'un fichier valide
  f.write(sample[:12])
  # Puis le reste de notre fichier flag
  f.write(flag[12:])

Dernière mise à jour

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