SECCON CTF 2015 – Steganography 2 (Stegano) – Write-Up

Steganography : Find the flag in this file

Category: Steganography Points: 100 Solves: 18

Dans ce challenge de steganography après avoir dézippé l’archive : sunrise.zip
Nous obtenons une image PNG.

A première vue, l’image ne semble rien avoir de particulier.
Rien de spécial dans le header.

$ head sunrise.png | xxd
0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR
0000010: 0000 0bd0 0000 0fc0 0806 0000 00a0 1b1a  ................
0000020: 4200 0000 0173 5247 4200 aece 1ce9 0000  B....sRGB.......
0000030: 0004 6741 4d41 0000 b18f 0bfc 6105 0000  ..gAMA......a...
0000040: 0009 7048 5973 0000 0ec4 0000 0ec4 0195  ..pHYs..........
0000050: 2b0e 1b00 0000 1074 4558 7453 6f75 7263  +......tEXtSourc
0000060: 6500 6950 686f 6e65 2036 73e2 0d09 0100  e.iPhone 6s.....
0000070: 0000 0774 494d 4507 df0b 1711 0737 7fba  ...tIME......7..
0000080: a0e2 0000 0020 7445 5874 4372 6561 7469  ..... tEXtCreati
0000090: 6f6e 5469 6d65 0032 3031 353a 3131 3a31  onTime.2015:11:1
00000a0: 3320 3036 3a31 343a 3539 7b0a 54dd 0000  3 06:14:59{.T...
00000b0: 0021 7445 5874 4372 6561 7469 6f6e 2054  .!tEXtCreation T
00000c0: 696d 6500 3230 3135 3a31 313a 3133 2030  ime.2015:11:13 0
00000d0: 363a 3134 3a35 39f3 8537 1b00 00fe db49  6:14:59..7.....I
00000e0: 4441 5478 5e74 dd69 971d 4772 26e8 0490  DATx^t.i..Gr&...

Pngcheck ne révèle aucune anomalie.

$ pngcheck -7fpstvx sunrise.png 
Scanning: sunrise.png
sunrise-1.png: contains sunrise.png PNG 1
File: sunrise-1
  chunk IHDR at offset 0x0000c, length 13
    3024 x 4032 image, 32-bit RGB+alpha, non-interlaced
  chunk sRGB at offset 0x00025, length 1
    rendering intent = perceptual
  chunk gAMA at offset 0x00032, length 4: 0.45455
  chunk pHYs at offset 0x00042, length 9: 3780x3780 pixels/meter (96 dpi)
  chunk tEXt at offset 0x00057, length 16, keyword: Source
    iPhone 6s
  chunk tIME at offset 0x00073, length 7: 23 Nov 2015 17:07:55 UTC
  chunk tEXt at offset 0x00086, length 32, keyword: CreationTime
    2015:11:13 06:14:59
  chunk tEXt at offset 0x000b2, length 33, keyword: Creation Time
    2015:11:13 06:14:59
  chunk IDAT at offset 0x000df, length 65243
    zlib: deflated, 32K window, fast compression
  chunk IDAT at offset 0x0ffc6, length 65524

[...]

No errors detected in sunrise-1 (181 chunks, -1036.3% compression).

Pourtant, si l’on souhaite triturer l’image, avec PHP par exemple, nous obtenons une erreur.

libpng warning: Extra compressed data.
libpng warning: Extra compression data.
gd-png:  fatal libpng error: IDAT: CRC error
gd-png error: setjmp returns error condition 2PHP Warning:  imagecreatefrompng(): 'sunrise.png' is not a valid PNG file ...
Unable to imagecreatefrompng.

A priori, il y aurait un surplus de data dans l’image.
Nous allons donc agrandir la hauteur de celle-ci et voir ce qu’il se passe.

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 
00 00 0B D0 00 00 10 C0 08 06 00 00 00 A0 1B 1A

En changeant la hauteur de 0FC0 à 10C0 un petit bout de l’image que nous n’apercevions pas apparait.
SECCON CTF 2015 - Steganography 2 (Stegano) - Write-Up Flag

Leopoldine.

Leave a Comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *