PL: Misja Gynvaela PL010 i format PDF
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:
Wygląda na to, że otrzymaliśmy poprawny plik jpeg, który na dodatek zawiera sekret będący rozwiązaniem zadania.