PL: Misja Gynvaela PL010 i format PDF

2 minute read Published:

0x01 Wstęp.

Kolejny blogpost, kolejna misja Gynveala. Rozszerzenie tego artykułu o wiadomości dotyczące samego formatu PDF pojawi się niebawem, gdy tylko będę miał czas aby go dokończyć. Tymczasem skupmy się na zadaniu.

MISJA 010            goo.gl/oAdvWe                  DIFFICULTY: ███░░░░░░░ [3/10]
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

Otrzymaliśmy dokument PDF w którym podobno jest zaszyta ukryta wiadomość.
Zwracamy się do Ciebie z prośbą o jej odnalezienie:

  https://goo.gl/wgt94W

Powodzenia!

--

Odzyskaną wiadomość umieść w komentarzu pod tym video :)
Linki do kodu/wpisów na blogu/etc z opisem rozwiązania są również mile widziane!

P.S. Rozwiązanie zadania przedstawię na początku kolejnego livestreama.
P.S. Pomysłodawcą misji jest foxtrot_charlie.

No tak, ostatnia linia powstrzymała mnie przed wrzuceniem rozwiązania zaraz po streamie. Postanowiłem się trochę rozpisać. Na szczęście weny starczyło na tyle, że powstały dwa wpisy (znaczy jeden… ten drugi -dłuższy, o samym formacie PDF, powstaje).

0x02 radare2 strikes again!

Czytelnik, który podjął próbę rozwiązania PL010 misji ze streamu pewnie zastanawia się, po co tyle trudu i starań. Przecież jest tyle dobrego i niemal “bezdotykowego” software do carvingu plików, że nie potrzeba męczyć się z r2. Nie sposób się nie zgodzić, z pewną dozą braku automatyzmu w radare2. Niemniej jednak misje Gyna uczą i bawią. Stwierdziłem, że chętnie poćwiczę manualny carving za pomocą r2 i przedstawię Czytelnikowi alternatywną ścieżkę dotarcia do flagi. Może skojarzenie z tym postem pomoże w przyszłości rozwiązać bardziej skomplikowany problem, którego nie dałoby się tak łatwo rozwiązać za pomocą binwalka czy scalpela.

Cały proces poprawnego rozwiązania przedstawia poniższy terminalcast (walczę jeszcze z łatwą konwersją na gify, dlatego dziś użyję jeszcze JavaScriptu. Tak, jest mi wstyd…):

Początkowo pobieramy plik, następnie wyszukujemy w nim magic numbers, za pomocą \m. Okazuje się, że pod adresem 0x4d5 znajduje się sygnatura formatu JPEG. BINGO! To może być to. Sprawdźmy, czy znajdziemy poprawny koniec pliku. W tym celu wyszukujemy dwa bajty końcowe tego formatu \xFF\XD9, do znalezienia tego ciągu (a także jego adresu) za pomocą radare2, użyjemy forward-slasha. Skoro określiliśmy już granice pliku jpeg, znajdującego się wewnątrz PDFa, czas wydobyć ten obrazek. W tym celu skorzystam z polecenia write to file, czyli wt. Polecenie write, działa od obecnego przesunięcia (seek). Wynik dumpa zapisujemy do pliku flaga.jpeg.

Teraz wystarczy otworzyć w dowolnym programie do wyświetlania grafiki plik flag.jpeg, naszym oczom ukazuje się taki oto obrazek:

flaga

Wygląda na to, że otrzymaliśmy poprawny plik jpeg, który na dodatek zawiera sekret będący rozwiązaniem zadania.

0x03 Źródła

Corkami PDF101

Corkami PDF

radare2 file carving