iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
Security

CTF30系列 第 12

CTF 9: Oh My Raddit (Web/Crypto, HITCON CTF 2018)

  • 分享至 

  • xImage
  •  

簡介

這題的註解是:

Flag is hitcon{ENCRYPTION_KEY}, and here is a hint for you :P

P.S. If you fail in submitting the flag and want to argue with author, read the source first! 

Source 是一個超連結,裡面寫着 assert ENCRYPTION_KEY.islower()

如果點進去網站本身的話,會發現這是一個類似精簡版 Reddit (美國 PTT) 的網站。

偵查階段

如果仔細看每個連結的文字和實際上的 URL,會發現 URL 不太單純。它長的像:

<a href="?s=59154ed9ef5129d081160c5f9882f57dcfd76f05f6ac8f1a38114a30fb1839a27fea88c412d9e1149dedcb1c01c0a6662a36d91fd8751e52ba939a65efbe150f9504247abb9fe6be24d3d4dcfda82306">An Innovative Phishing Style</a>

看看周遭的連結,會發現這東西看似沒啥規律,但 URL 長度似乎會和 s= 的內容有關聯。如果把所有 s 參數都抓下來,然後計算它們的長度的話,會發現全部密文長度都是 8 的倍數。

其中有兩個 URL 長度相等,但其密文長度不太一樣。分別是:

 
8c762b8f22036dbbdda56facf732ffa71c3a372e4530241246449a55e25888cf98164f49a25f54a84ea0640e3adaf107cc67c8f2e688e8adf18895d89bfae58e33ae2e67609b509afb0e52f2f8b2145e
# https://newsroom.fb.com/news/2018/09/security-update/
 
a164de5c0574559c7181f4ff4ee6693c8740afb01d3c8d6f1c5bc1d931bb57cf2d17cbc566279d6f51fdf7c38111ee10602ad1a9467cb0db9d80eb3c9a5ff4b33674c613d436ac902241ce2f5d5ab0825a6bdd41073fb6e31202b4fcd3e2dc08b0ec4469e20ff376
# https://www.securifera.com/blog/2018/10/07/servicefu/

故此題目的加密法應該是有加入一些 salt (cipher text = url + salt)。

我們可以試著亂改 URL 內的幾個字元。如果寫 script 去測試的話,會發現只有前 96 字是有效的。故我們可以得知以下結論:

  1. 這個加密算法是 block cipher 為基礎的,且 block 之間並無相依關係。如果有相依關係,那改動前面的 96 字,會導致整個解不出來。因此,這應該是 ECB mode
  2. 後面的長度可能是隨機性的 padding

常用的 Block Cipher 加密算法有 DES 和 AES 兩種。但 AES 最小是 AES-128,我們的密文長度遠遠不夠。故推測應該是 DES-ECB 組合。

DES 加密當中,只有 56bit 中有用。其 8 倍數的 bit 都是用來做校驗的,故每個字的最後一個字都要丟掉,例如...

bin(ord('b')) -> 01100010 -> 0110001X
bin(ord('c')) -> 01100011 -> 0110001X

因為 key 是英文字母,小寫,故只有 14 個字母可用。難度爲 14^8。
假設把明文以 block size = 8 來拆分的話,會看到結尾有 3ca92540eb2d0a42。這是因為 PKCS5 的規則下,Padding 的內容要和長度一樣 (例如 block size = 8,要 pad 的爲 8 位,則要寫 0x08 八次)。故我們可以 hashcat 一波,得知密鑰內容。

我們在下一集中會講到此題後續解法和 Oh My Raddit v2。

參考資料

推薦這篇,這個比 CTFTime 上的清楚非常多。
hitcon2018受虐笔记二:Oh-My-Raddit-1-and-2学习 | wonderkun's|blog
Using padding in encryption


上一篇
CTF 8: Personal Website (Web, ASIS CTF 2018 Quals)
下一篇
CTF 9: Oh My Raddit (Web/Crypto, HITCON CTF 2018)
系列文
CTF3030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言