忍者ブログ

プログラミングの練習

プログラミングの問題やプログラミング関連知識、ソフトウェアのテストについてのブログです

【PicoCTF】コマンドを逆回しで解き明かせ!「Undo」の順次逆算アプローチ



前回に続き、愛用のM3 MacBook Airのターミナルを相棒に、CyLab Security Academy(旧PicoCTF)の「General Skills(Easy)」カテゴリにある問題「Undo」に挑戦しました!


今回の問題は、一筋縄ではいかない一風変わったテキスト加工がテーマ。どのような手順で謎を解き明かしていったのか、そのアプローチをまとめておきます。




1. 「Undo」とはどんな問題?

問題文を見ると、次のようにシンプルに書かれています。


  • ・カテゴリ: General Skills(難易度:Easy)

    ・問題文: 「Can you reverse a series of Linux text transformations to recover the original flag?(一連のLinuxテキスト変換を逆にして、元のフラグを復元できますか?)」

つまり、リモートのサーバー(Netcatで接続)から送られてくる加工済みの文字列に対して、「どんな変換がされたのか」のヒントを読み解きながら、順番に逆の操作(Undo)を施していくというパズルのような問題です。




2. 4つのステップで文字列を「逆算」していく

接続先から提示されるヒントを頼りに、M3 MacBook Airのターミナル上でLinuxコマンドを組み合わせて一つずつ加工をロールバックしていきます。主なアプローチは以下の4段階です。


  • 1. Base64でのデコード処理

    base64 -d コマンドを使い、エンコードされて意味不明になっていた文字列をまずは通常のテキストへと戻します。

  • 2. 逆順(リバース)の解除

    文字が左右反対にひっくり返されている状態に対し、お馴染みの rev コマンドで向きを正しい形に直します。

  • 3. trコマンドによる文字置換(ハイフン・括弧の復元)

    ハイフン(-)をアンダースコア(_)に戻したり、括弧の形(() から {} へ)を置換したりする文字変換を行います。

  • 4. trコマンドでのROT13変換(最終デコード)

    アルファベットが13文字分ずらされていた暗号に対し、再度ROT13の変換をかけて元の文字をあぶり出します。

【ポイント】
このように、段階ごとに提示されるヒントを元に「どのLinuxコマンドを使えば逆の操作ができるか」を逆算していくプロセスは、まるでパズルを解いているようで非常にワクワクします!


3. まとめ


  • ・「Undo」は、施されたテキスト加工の履歴をヒントから読み解き、逆算して元の文字列を復元する問題

    ・base64 -d、rev、tr といった標準的なLinuxコマンドの組み合わせがそのまま強力な武器になる

    ・手順を一つずつクリアして最後に正しいフラグ文字列が浮かび上がったときの達成感は格別!

日頃のインフラ作業でなんとなく使っているコマンドたちが、こうしてセキュリティの謎解きで大活躍してくれると本当に楽しいですね。次回もまた新しい問題に挑戦していきたいと思います!


PR