iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Security

picoCTF系列 第 11

[Day 11] interencdec

  • 分享至 

  • xImage
  •  

看到題目和提示,知道這題和解密有關,看到 tag 可以得知更詳細的資訊,能知道此題是和 base64 和 Caesar 加密有關。
https://ithelp.ithome.com.tw/upload/images/20240816/20168342biAt1id5WE.png
hint:Engaging in various decoding processes is of utmost importance

將題目的檔案下載,發現得到一個 enc_flag。

$ ls -l
total 12
-rw-r--r-- 1 root            root            4443 Aug  2 05:14 README.txt
-rw-rw-r-- 1 user            user            73 Mar 12 00:36 enc_flag

先用file 指令,知道 enc_flag 是文字檔。
於是使用 cat,查看 enc_flag 裡有甚麼,結果得到一串字串。

$ file enc_flag 
enc_flag: ASCII text
$ cat enc_flag 
YidkM0JxZGtwQlRYdHFhR3g2YUhsZmF6TnFlVGwzWVROclh6ZzJhMnd6TW1zeWZRPT0nCg==

由題目的 tag 知道,這應該是 base64 加密過後的字串。那現在就來介紹一下 base64 是甚麼。
Base64 是一種將二進制數據表示為 ASCII 字符集中可打印字符的編碼方式,也就是 (1) 大寫字母(A-Z)、(2) 小寫字母(a-z)、(3) 數字(0-9)以及 (4) 兩個額外的字符(通常是+和/),總共 64個字符,常用於電子郵件、URL 或 XML 等文字傳輸機制進行傳輸。

Base64 的編碼很簡單,分成以下三個步驟:

  1. 分組:將輸入的二進位資料以 3 位 bytes(24 bit)一組進行處理。
  2. 分割:將這 3 個 bytes 分成 4 個 6 bits 的區塊,每個區塊對應一個 Base64 字元 ( 因為 2^6 =64 )。
  3. 填充:如果 bits 數不能被 6 整除,用 = 填充。

而解碼就是將加密步驟反過來就是了。
詳細步驟,可參考:Web 傳輸的摩斯密碼,base64介紹深入了解Base64編碼和解碼:應用、原理及注意事項

回到題目,於是以 base64 -d解碼,發現又得到一個很像 base64 加密後的內文。

$ base64 -d enc_flag          
b'd3BqdkpBTXtqaGx6aHlfazNqeTl3YTNrXzg2a2wzMmsyfQ=='

於是再次用 base64 解碼,得到一串文字。

$ base64 -d enc_flag | cut -d "'" -f2
d3BqdkpBTXtqaGx6aHlfazNqeTl3YTNrXzg2a2wzMmsyfQ==
$ base64 -d enc_flag | cut -d "'" -f2 | base64 -d
wpjvJAM{jhlzhy_k3jy9wa3k_86kl32k2}

觀察字串並且想起 tag 提到的 Caesar 加密,猜測得到的字串應該需要經過位移才能得到正確的 flag。而 w 到 p 需要經過右移 19 個位置,因此我們使用 rot 19 ( rotation 19 ),就能得到解答啦。
https://ithelp.ithome.com.tw/upload/images/20240816/20168342GRYMYYwRlk.png

小結:
了解 base64 編碼和解碼的基本步驟,並知道 Caesar 加密可以使用 rot 來實現位移解密。


上一篇
[Day 10] Packer
下一篇
[Day 12] CanYouSee
系列文
picoCTF30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言