W tym poście opiszę rozwiązanie zadania Flag in Flame z działu Forensics picoCTF.
Do zadania dostajemy plik logs.txt oraz wskazówkę, że musimy używać base64 do dekodowania i wygenerowania obrazu.
Base64 jest to sposób kodowania danych. Zapisuje on zakodowane dane w postaci liter, cyfr, +, -, =. Należy pamiętać, że to nie jest szyfrowanie każdy może to odszyfrować. Ciąg można rozpoznać po powyższych znakach.
Najprościej plik udało mi sie zdekodować korzystająć ze strony base64decode.org.
Po wejściu na stronę zjeżdżamy na sam dół i wprowadzamy plik do dekodowania:
Po wykonaniu operacji pobieramy plik i dostajemy gotowy plik png:
Pobrany plik wygląda następująco:
Innym sposobem jest skorzystanie bezpośrednio z Power Shella na windowsie:
- $b64 = Get-Content .\logs.txt -Raw
- $bytes = [Convert]::FromBase64String($b64)
- $out = Join-Path $PWD "logs_base.png"
- [IO.File]::WriteAllBytes($out, $bytes)
Dobra wróćmy do flagi:
Wydaje się, że jest to zwykła konwersja z hex na ascii. Więc wchodzimy na odpowiednią stronę:
- 7069636F4354467B666F72656E736963735F616E616C797369735F69735F616D617A696E675F35636363376362307D