読者です 読者をやめる 読者になる 読者になる

田舎院生のセキュログ

自分用のメモとかWrite-up

#5 Onion

気づけば1ヶ月ぶりの更新(゜Д゜)

問題はこちらのサイト
http://ksnctf.sweetduet.info/problem/5

長い文があるだけ(・ω・)

とりあえずハッシュ化したら答え出たりしないかなーと思ったけど、まぁ出るわけもなく。笑

調べたところ、どうやらBase64エンコードされた文字列らしい。
見極め方はよく分からないんだけど、数字よりもアルファベットの方が多いのが特徴なのかな?
末尾に「 = 」があれば分かりそうだけど(-ω-)

ということで、とりあえずネット上でデコードしてくれるサイトを探してこの文字列をBase64でデコードしてみる。
が、全然解読されず('Д')

問題名がOnionだから、たぶん何回もデコードしていくのかなぁと予想。(皮を何枚も剥くみたいな?)
で、デコードを何回も繰り返していくと・・・でた!

begin 666 <data>
51DQ!1U]&94QG4#-3:4%797I74$AU
 
end

ナニコレ(゚д゚)!?
Base64では使われていない記号が含まれているからこれ以上デコードできず。
で、「begin 666」とかで調べてみると・・・uuencodeっていうのでエンコードされたときの出力らしい('ω')

特徴として、

  • begin 3桁の数字 ファイル名 で始まり、
  • end で終わる

らしい。
ちなみに3桁の数字はパーミッションを表している。アクセス許可とかのヤツですね(・∀・)

ということで、この文字列をuuencodeでデコードしてみると・・・

FLAG_FeLgP3SiAWezWPHu

フラグゲットーーー!
uuencodeもオンライン上のサービスを探して利用しました(;^ω^)
本当はBase64uuencodePythonとかでプログラムを作った方が良いんだろうけど、uuencodeはPython3系では面倒くさいっぽいので今回はやめときました。。
でも今後必要になると思うから、暇なときに作っておこう(^^;)

Base64uuencodeエンコード手法について名前は知ってたけど、実際にどういう仕組みでやってるのかは知らなかったから、今回良い勉強になったと思う(`・ω・´)
wikiに分かりやすく書いてあるので知らない人は是非wikiを!(笑)

実際にCTFを解くときは、どのエンコード手法が使われたのか、気づきが重要になりそうですねー。