piątek, 4 lipca 2025

picoCTF - Read my cert

W tym poście chciałbym opisać sposób rozwiązania zadania picoCTF  Read my Cert z działu Cryptography.


W zadaniu trzeba odczytać certyfikat i standardowo znaleźć flagę. Do zadaniu dołączony certyfikat (readmycert.csr), który po odczytaniu np. w programie Notepad++ wygląda następująco:

  1. -----BEGIN CERTIFICATE REQUEST-----
  2. MIICpzCCAY8CAQAwPDEmMCQGA1UEAwwdcGljb0NURntyZWFkX215Y2VydF8zYWE4
  3. MDA5MH0xEjAQBgNVBCkMCWN0ZlBsYXllcjCCASIwDQYJKoZIhvcNAQEBBQADggEP
  4. ADCCAQoCggEBAN1PdpW4sKum7AhFubDl86sflki20dWKkZ/iZBYYX/RYqZIWm9ve
  5. pdfwkeiDdz7KriPzM9tTDuJm1kWv8/3AxHrYwliFHK0lsmUYdOcPfrvlh6SIuZwH
  6. vxhrR0DJ0+W5vU+4j9G/hk2+JLMURh8WZadwBhRcfIxk97OXujjvHS9KplMAs5ul
  7. cSSQcv77QkIcxVg1OSDVZoEjTr131g+/Jox3T+uFPEvzF9iq03JMU39oqfGaFL02
  8. EQTaTl8efLIDkGxrKCc+Jhn4e1mD+9UlUmIn9nsOBCYNrnfq4usAL10ZPMDty2Sx
  9. yVTl0171trvCA9DF5PRG6eMYirJOmF18oSUCAwEAAaAmMCQGCSqGSIb3DQEJDjEX
  10. MBUwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAMa7s/l3
  11. mAwJi7LsosPS6/VlZwfTdiJAv+WOKN9T1q2JRHsAGRrW9Gz5p7nSBKJxevRaOMwn
  12. XWK0HqmN3y2/lor50jWzqLhM4TnbKsakXnEIo90XgHoy+n0DL0296Lg/xoXrRgrh
  13. 2o3rtZTc+irqUzTRM7Q1F76LNmgtEXqvbOm6Gx2dASPhVAAfylRBCTyz2dYwg2vM
  14. kwt4e5bTvpze/xyTyI8Pydq09YYJe0+a2cHSgcoyGoWXjIK4CUxjBNXAFxSPCcS3
  15. 5JRkBnyGo+KL+XtuK9yCX7xBFkwLybK7Mj4TeGiwDsR/0SwqyWGb7Q2m58ay8RVm
  16. pmAIEs21M3236Z4=
  17. -----END CERTIFICATE REQUEST-----

Certyfikat jest zapisany w formacie PEM, ponieważ znajduje się w standardowych nagłówkach dla tego typu certyfikatów:

  1. -----BEGIN CERTIFICATE REQUEST-----
  2. //Base64
  3. -----END CERTIFICATE REQUEST-----

Certificate request oznacza, że jest to CSR (ang. Certificate Signing Request). Co też widać po rozszerzeniu pliku. 

CSR jest to żądanie podpisania certyfikatu, czyli specjalnie sformatowany plik, który zawiera dane jakie są przesyłane do urzędu certyfikacji w celu wygenerowania certyfikatu SSL/TLS. 

W skład CSR wchodzi
  • Nazwa podmiotu - np. CN (nawa domeny), O, OU, L ,ST, C (inne dane organizacyjne)
  • Klucz publiczny
  • Algorytm i długość klucza,
  • Podpis cyfrowy - wykonany z wykorzystaniem klucza prywatnego, aby potwierdzić autentyczność CSR. 
Inne typy nagłówków jakie można spotkać to np.

  1. -----BEGIN CERTIFICATE----- //certyfikat (X.509)
  2. -----BEGIN RSA PRIVATE KEY----- //klucz prywatny
  3. -----BEGIN PUBLIC KEY----- //klucz publiczny
  4. -----BEGIN X509 CRL----- //lista unieważnionych certyfikatów

Aby zdekodować certyfikat można posłużyć się biblioteką openssl:

  1. openssl req -in readmycert.csr -noout -text

Gdzie:
- noout - nie będzie wypisywana zawartość pliku CSR w formacie base64
-text - wyświetl zawartość CSR w postaci tekstu, w formacie łatwym do odzczytania. 

Innym sposobem jest skorzystanie z stony internetowej, która pozwoli na zdekodowanie danych np. SSLShopper - CSR Decoder.


Flaga znajduje się w polu Common Name. 

Brak komentarzy: