忍者ブログ

プログラミングの練習

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

【PicoCTF】分割ファイルを復元せよ!「Piece by Piece」のファイル結合とアーカイブ抽出アプローチ



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


今回のテーマは、リモートサーバー上に散らばった複数のファイルパーツを回収し、正しく結合・解凍して中身を暴く「Linuxのファイル操作とアーカイブの復元」です。どのようなコマンドを組み立てて解決に至ったのか、そのアプローチをまとめておきます。




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

指定されたホストとポートへSSHでリモート接続し、ログイン後のホームディレクトリを確認します。


  • ・接続方法: SSHを用いた非標準ポートへのリモートログイン


    ・確認されたファイル: ホームディレクトリには、実行手順が書かれた指示書(instructions.txt)と、アルファベット順に分割された複数のファイルパーツ(part_aa 〜 part_ae)が配置されていました。

指示書(instructions.txt)のヒントを読むと、「ファイルは複数のパーツに分割されたZIPファイルであること」「指定されたパスワードを用いて解凍する必要があること」が示されており、ここから具体的なコマンド操作の組み立てに入ります。




2. 2ステップで進めるファイル復元プロセス

ターミナルから標準コマンドを組み合わせて、断片化したデータを1つのアーカイブとして復元・抽出します。


  • 1. 分割ファイルの結合(Concatenation)

    cat part_aa part_ab part_ac part_ad part_ae > archive.zip


    catコマンドと標準出力のリダイレクト(>)を使い、順序通りに並んだ複数のパーツファイルを1つのZIPアーカイブファイルへと完全に結合します。

  • 2. パスワード保護されたアーカイブの解凍

    unzip archive.zip


    指示書で指定された保護パスワードを入力し、結合して復元したZIPファイルを解凍。内部に封入されていたターゲットファイルを抽出します。

【ポイント】
「分割されたデータの構造を正しく理解し、適切な順序で結合して復元する」というプロセスは、データリカバリやインシデント調査(フォレンジック)の現場でも求められる極めて実用的なスキルです。地味ながらLinuxの基本コマンドの応用力が試される好例ですね!


3. まとめ


  • ・「Piece by Piece」は、リモートサーバー上の断片化したファイル群をcatコマンドの連結によって1つのアーカイブへ復元する手法を学ぶ問題


    ・パスワード付きアーカイブに対する適切な解凍アプローチにより、隠されたターゲットファイルを抽出


    ・CUI環境でのファイル結合やアーカイブ操作など、エンジニアの基礎体力となる必須の操作手順を確認

ターミナル上での直感的なファイル操作と、ヒントから正解のコマンドを組み立てていくプロセスは非常に爽快です。次回のチャレンジもコマンドラインを駆使して華麗に攻略していきたいと思います!

PR