Principe:
Patcher un fichier PDF corrompu pour pouvoir l'ouvrir et lire le flag qu'il contient
Infos (cf menu latéral):
🚩 Flaggué! +988 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{DNS_3xf1ltr4t10n_hallebarde}
Le challenge
Contenus corrompus
J'ai tenté des outils de "recover your PDF file", mais ces outils sont assez… niaiseux et aucun n'a marché (quelle surprise!). Note: n'utilisez jamais ces outils pour des situations réelles, avec des documents potentiellement confidentiels!
La corruption aurait pu avoir lieu si on ne regarde que les réponses DNS et qu'une des réponses n'a pas été reçue
Paquet perdu?
Patcher le PDF
11 0 obj <</Font et 928 00000 n 000) et on les repère dans le fichier PDF via hexeditor. J'ajoute ensuite une ligne de zéros en dessous, représentant le paquet à reconstituer
Les paquets font tous 32 octets (1 ligne dans hexeditor), ce qu'on voit dans le script Python d'exfiltration, mais aussi dans le dump du paquet précédent celui perdu (11 0 obj <</Font)
Premier bloc
0x0a >> 0x0a endobj 0x0a 0x0a constitue la fin du paquet manquant
8 0 R au dessus et 10 0 R en dessous), un peu au pif, j'ai changé les 4 premiers octets pour x20 0 x20, ce qui donnera /F1 9 0 (des références à des objets numérotés du PDF).Seul manque donc le 4e caractère
En pratique, je n'ai pas vu qu'il était probable qu'un 0x52 ("R") soit attendu pour ce 4e caractère, vu les 8 0 R et 10 0 R précédents!
Second bloc
00000 n semble pertinent comme début de patch
0x0a 000000 ? mais j'ignore le toute dernier caractèrePetit force brute
En pratique, seules 10 possibilités auraient pu être testées en voyant que le 4e caractère du premier bloc devait être un "R"!
pdf2text pour les convertir en texte, espérant que l'un des PDF soit correctement patché et contienne le flag en format texteFlag
Les 10 fichiers patchés ont tous 0x52 soit "R" en 4e caractère du premier bloc, comme attendu avec le recul (je n'avais pas vu, pendant le CTF, que ce caractère était sans doute "R")
Apparemment, d'autres ont flaggé ce challenge sans patcher le PDF mais en utilisant la table de caractères du fichier
Flag: 404CTF{DNS_3xf1ltr4t10n_hallebarde}