前提
前回の続き
趣味を作ろう(CTF-第三回) – 日曜エンジニアの学習記録
引き続きCTFの続きに取り組む
CTF二面の問題を解く
①No19
前回のやり直し。前回試さなかったけど、今回は定石通りfileコマンドを打ってみる。

その結果、以下の情報が手に入った。これってリブラオフィスっていうOffice製品を開くOSSを表しているようだ。
拡張子をodgにしたら開くようになるようだ

‥でも全部のファイルを.odgにしても上手くいかなかった‥白状すると分からな過ぎて正解をググってしまいました‥
大元の.zipファイルを拡張子変更すれば解決するようでした。
大元のファイルを拡張子変更する発想が全くわきませんでした。ズルしてとりあえず解決
①No20

ソースコード分からないのでとりあえずAIに投げます。その結果以下の趣旨のコードだと分かる
このCコードは、argv[1]の文字列をキー長ごとに区切って各ブロックを逆順に並べ直し、その結果を cpaw{...} の形で出力します。
(例)flag="ABCDEFGHIJ", key=3 → CBAFEDIHG …のように3文字ずつ逆順。
ただし提示コードは「末尾が key の倍数でない余り部分」を出力しない不具合があります(例の J が落ちる)。また引数チェックもありません。
問題文の中の文字を入れ替えたら正解が出ることが分かった。暗号文を見ると初めの4文字を入れ替えたらYourという単語になるので4文字づつ入れ替えるようにコードを書き替えた。そのコードに暗号文を入力したら解決
②No21

開発のことは分からん。初手が分からん。
.exeを実行したらcpaw{}と表示された。このカッコ内に入る関数を.exeファイルの開発者が入力し忘れたってことなんだけど
どうすればよいってこと?
exeファイルのコードみたいなのが見れればよいということ?
AIに聞くことにした。以下回答の重要部分
この画像の問題はCTF(Capture The Flag)のReversing(逆アセンブル・解析)問題です。
タイトル「Q21. [Reversing] reversing easy!」および本文から、ELF形式の実行ファイル(Linux用バイナリ)が与えられており、プログラムを解析してフラグを取り出すのが目的です
典型問題らしい。ELFファイルって何か知らないから調べた。むずいけどUNIX系のOSで実行ファイルとかいろいろな用途で汎用的に使える形式らしい。
ELF (Executable and Linkable Format) ファイルとは #kernel – Qiita
で、どうすればよいのかは以下らしい。

上記が低レベルの言語(アセンブリ言語)から復元する典型パターンらしい。
提示してもらった方法で分からないのが以下3つのコマンド
objdump -d
ghidra
radare2
上記それぞれ調べてみた。いずれもアセンブラ解析用ツールのようだ。であればどれか一つでよさそう。
[備忘録]逆アセンブルするときのobjdumpの使い方 #CTF – Qiita
Ghidra を使ってみよう #Ghidra – Qiita
初心者がradare2でアセンブラ解析始めてみた #初心者 – Qiita
そんなこんなでodjdumpコマンドをVM上(OS:Kalilinux)で実行したら機械語を人間にも分かるようにしてくれました。
嘘です。何も分かりません。逆アセンブリむずすぎ

私のイメージではcpawでフィルタすれば答えが出てくるはずなのに出てこない。
手慰めにstringsコマンド打ったら縦読みでモロflag出てきました。解決。アセンブラ解析で解く方法はまた後で。
③No22

とりあえずURL先に移動

SQL文を入力してあっさり解決。前の問題と難易度の落差がすごかった。
④No28

問題文的にキャプチャファイルからHTTPなど平文でやり取りしているプロトコルでフィルタリングすればよいことが推測される。
内容的にTFTPでなく、FTP(平文通信)という通信をしていることが分かった。

認証情報が丸見え‥
コマンドプロンプトからつないでみた

つながった。ファイルを見ようとしたら以下のエラーが出る。

コマンドプロンプトはパッシブモードが使えなくてアクティブモードでつなごうとするからNAT越えする時に上手くいかないらしい。
自宅のNASとしかコマンドプロンプトでFTP通信したことなかったから知らなかった。
【Windows】ftp.exeは本当にPassiveモードで接続できないのか?(Windows Server 2022の場合) #Microsoft – Qiita
しょうがないのでVM上のKalilinuxで開いた。
いかにもなファイル名が一つありました。開いて解決。

進捗

レベル2クリア、次はレベル3