這是今天的題目
從題目名稱可得知這題是典型的多層編碼題目,檔案內容看起來仍是可列印的base64字元。代表不是一次解就到位,需要反覆解碼多層才能得到最終答案。
第一步驟我們先來查看檔案的內容是甚麼!
那透過指令可查到內容是ASCII檔,並且輸出了一段文字。
那第二步我事先進行一次的解碼並將其存成一個新的檔案,再輸出新檔案的解碼結果。
好到這邊可以看到一次解碼後的結果並沒有馬上跑出答案,接著多試了幾次後想到題目要的可能是重複解碼。
透過這支迴圈解碼代碼就解出來了呢,那這邊還有另一種解法。
cp enc_flag tmpfile
while tr -d '\n\r' < tmpfile | grep -qE '^[A-Za-z0-9+/=]+$'; do
base64 -d tmpfile > tmpfile.dec && mv tmpfile.dec tmpfile
done
cat tmpfile
這方式會一直解到不再是base64為止,解完之後才想到用這個會更有效率。
心得:
這題其實就是標準的練習題型,沒有太複雜的陷阱,關鍵在於能不能馬上聯想到需要重複解碼。一開始用手動方式會覺得麻煩,但一旦寫成迴圈或自動判斷腳本,就能一次跑到答案,效率差很多。這過程讓我體會到鐵人賽連續挑戰時,解題速度和自動化程度很重要,省下的時間就是後面面對困難題目的優勢。整體來說,雖然是基礎題,但很好地幫助我熟悉Linux指令的串接與思路流程化,算是一個扎實的熱身題。