テスト問題をダウンロードした後、それを解凍し、接尾辞名のないファイルを取得します。
1. まず txt サフィックスを追加し、ファイルの内容を表示します
いくつかの printf 関数を見ました
シェルチェックで有効な情報が見つかりませんでした
2. 分析のためにファイルを ida64 に置きます
Shift+F12 で文字列を表示し、キーワードを検索します
キーワードをダブルクリックして、文字列を参照するアドレスを検索します。
文字列を参照しているアドレスをダブルクリックすると、フローチャート インターフェイスにジャンプします。
F5 を押して疑似コードを表示します
重要な文はこの if 判定文で、最終的には Success を出力する文字列なので、global と _b の 2 つの文字列は同じになります。
「グローバル」をダブルクリックして、グローバル文字列の値を確認します。
aFKWOXZUPFVMDGHをダブルクリックします
次にFKWOXZUPFVMDGHを選択します
次に、グローバル値をエクスポートします (ショートカット キー Shift+E を押すか、[編集] -> [データのエクスポート] をクリックします)。
10 進数または 16 進数をエクスポートするオプション
ここでは 10 進数データをエクスポートすることを選択します
XOR演算を実行するスクリプトを作成する
shua = [102, 10, 107, 12, 119, 38, 79, 46, 64, 17,
120, 13, 90, 59, 85, 17, 112, 25, 70, 31,
118, 34, 77, 35, 68, 14, 103, 6, 104, 15,
71, 50, 79, 0]
flag = chr(shua[0])
i = 1
while True:
if i < len(shua):
flag += chr(shua[i] ^ shua[i-1])
i += 1
else:
break
print(flag)
実行後の結果
フラグを取得: flag{QianQiuWanDai_YiTongJiangHu}
プロセスの概要
質問条件:
- PE ファイルではありません
質問を行う手順:
- 有効な情報があるかどうかを確認するためにtxtサフィックスを追加します
- シェル チェック ソフトウェアを使用してシェルをチェックし、プログラムのビット数 (64 ビットまたは 32 ビット) を確認します。
- ida を使用して分析します (Shift+F12 を使用して文字列を確認し、キーワード (フラグなど) を探します)。
ida 分析プロセス:
- Shift+F12 で文字列を確認し、キーワード (フラグなど) を探します。キーワードがない場合は、main 関数で情報を検索します。
- 文字列をダブルクリックして、その文字列が含まれている場所を確認します
- 文字列を参照して詳細なアドレスを表示します
- F5 を使用して逆アセンブルし、疑似コードを表示します
- 疑似コードを分析します (数値を選択した後、キーボードの「R」キーを押して数値を文字に変換します。変数を選択した後、キーボードの「X」キーを押して変数の相互参照を表示します)
- Shift+E で変数の値をエクスポートできます
- 計算を実行するコードを作成する