--- template: overrides/blog.html icon: material/table-edit title: Cryptography in picoCTF 2019 description: > Một vài bài giải về mảng cryptography trên picoCTF search: exclude: true hide: - feedback tags: - CTF - Cryptography --- # __Cryptography in picoCTF 2019__ :octicons-calendar-24: October 10, 2020 · :octicons-clock-24: ~5 minutes --- ## __The numbers[^1]__ [^1]: [The numbers](https://play.picoctf.org/practice/challenge/68?category=2&originalEvent=1&page=1)
Hình ảnh challenge
Sau khi chúng ta download file ảnh từ challenge về ta được hình bên dưới.
Hình ảnh minh họa sau khi mở file
Từ hình trên ta chú ý rằng phần đầu dãy số là `16 9 3 15 3 20 6{`và kết hợp với gợi ý của đề bài ta sẽ phát hiện ra khi convert dãy số `16 9 3 15 3 20 6` ra bảng chữ cái thì sẽ cho ra được chữ `PICOCTF` (các số chính là vị trí các chữ cái trong bảng chữ cái latin). Ta làm tương tự với các dãy số sau, ta sẽ thấy được flag !!! success "__Flag__" PICOCTF{THENUMBERSMASON} ## __Easy1[^2]__ [^2]: [Easy1](https://play.picoctf.org/practice/challenge/43?category=2&originalEvent=1&page=1)
Hình ảnh challenge
Hình ảnh trong file table
Từ hình ảnh trên, ta biết được challenge này đang sử dụng Vigenère_cipher thuộc mật mã Caesar. Theo mã hóa Vigenère cipher, chúng ta sẽ được cung cấp 1 chuỗi key và chuỗi Ciphertext. Và để tìm message ta sẽ decoder từng kí tự một, bằng cách message[i] = (Ciphertext[i] - key[i] + 26) % 26. Tôi có viết một script để giải quyết vấn đề này
Code giải mã thể hiện trên C++
Sau khi chạy đoạn code trên, ta dễ dàng tìm ra được decoder là `CRYPTOISFUN` và đây cũng chính là 1 phần của flag cần tìm !!! success "__Flag__" picoCTF{CRYPTOISFUN} ## __13[^3]__ [^3]: [13](https://play.picoctf.org/practice/challenge/62?category=2&originalEvent=1&page=1)
Hình ảnh challenge
Ngay đầu dòng mô tả, ta cũng nhận ra đây là 1 challenge về ROT13 cơ bản, ta có thể dùng 1 số công cụ giải mã code trên google như là giải mã ROT13 và tôi cũng có viết 1 đoạn code nhỏ để giải mã cũng như nói 1 vài thứ tôi hiểu về loại mã hóa này, các bạn có thể xem tại đây !!! success "__Flag__" picoCTF{not_too_bad_of_a_problem} ## __caesar[^4]__ [^4]: [caesar](https://play.picoctf.org/practice/challenge/64?category=2&originalEvent=1&page=1)
Hình ảnh challenge
Lại là 1 challenge về mật mã caesar. Hiểu đơn giản thì mã caesar là một dạng mật mã thay thế, trong đó mỗi ký tự trên văn bản sẽ được thay bằng một ký tự khác, có vị trí cách nó một khoảng xác định trong bảng chữ cái. Tham vọng của ta là tìm khoảng dịch chuyển các chữ cái hợp lí để biến thông điệp dspttjohuifsvcjdpoabrkttds thành một thông điệp có nghĩa. Vì bảng chữ cái có 26 kí tự, tức là có tối đa 25 khoảng dịch chuyển, tôi đã ngồi chạy từng khoảng 1 thì biết được rằng khoảng dịch chuyển của message này là 25 kí tự, hay nó còn được gọi là `ROT25` tôi có 1 script để giải mã chúng !!! success "__Flag__" picoCTF{crossingtherubiconzaqjsscr} ### __Xem thêm__ [:octicons-arrow-right-24: Mật mã caesar][Mật mã caesar] [:octicons-arrow-right-24: Mật mã caesar 2][Mật mã caesar 2] [:octicons-arrow-right-24: Decode caesar online][Decode caesar online] [Mật mã caesar]: https://vi.wikipedia.org/wiki/M%E1%BA%ADt_m%C3%A3_Caesar [Mật mã caesar 2]: https://privacycanada.net/classical-encryption/caesar-cipher/ [Decode caesar online]: https://cryptii.com/pipes/caesar-cipher ## __Tapping[^5]__ [^5]: [Tapping](https://play.picoctf.org/practice/challenge/21?category=2&originalEvent=1&page=1)
Hình ảnh sau khi "nc jupiter.challenges.picoctf.org 21610"
Ở challenge này, ngay đầu tiên ta có dòng gợi ý: `What kind of encoding uses dashes and dots?` Và đúng, tôi có nghiên cứu về loại mật mã này, đây là mật mã morse, sau khi nhận diện được loại mã hóa, ta dễ dàng có thể tự decode hoặc dùng 1 số công cụ decode mã morse có sẵn ở trên intenet. !!! success "__Flag__" PICOCTF{M0RS3C0D31SFUN3902019519} ### __Xem thêm__ [:octicons-arrow-right-24: Mã morse][Mã morse] [:octicons-arrow-right-24: Giải mã mã morse][Giải mã mã morse] [Mã morse]: https://morsedecoder.com/vi/ [Giải mã mã morse]: https://morsecode.world/international/translator.html