Buucft-Reverse-xor 問題の解決策とアイデアのまとめ

テスト問題をダウンロードした後、それを解凍し、接尾辞名のないファイルを取得します。 

1. まず txt サフィックスを追加し、ファイルの内容を表示します

いくつかの printf 関数を見ました 

シェルチェックで有効な情報が見つかりませんでした

 

2. 分析のためにファイルを ida64 に置きます

Shift+F12 で文字列を表示し、キーワードを検索します

キーワードをダブルクリックして、文字列を参照するアドレスを検索します。

文字列を参照しているアドレスをダブルクリックすると、フローチャート インターフェイスにジャンプします。

 F5 を押して疑似コードを表示します

重要な文はこの if 判定文で、最終的には Success を出力する文字列なので、global と _b の 2 つの文字列は同じになります。

「グローバル」をダブルクリックして、グローバル文字列の値を確認します。

aFKWOXZUPFVMDGHをダブルクリックします

次にFKWOXZUPFVMDGHを選択します

次に、グローバル値をエクスポートします (ショートカット キー Shift+E を押すか、[編集] -> [データのエクスポート] をクリックします)。

 

10 進数または 16 進数をエクスポートするオプション

ここでは 10 進数データをエクスポートすることを選択します

XOR演算を実行するスクリプトを作成する

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}

プロセスの概要

質問条件:

  1. PE ファイルではありません

質問を行う手順:

  1. 有効な情報があるかどうかを確認するためにtxtサフィックスを追加します
  2. シェル チェック ソフトウェアを使用してシェルをチェックし、プログラムのビット数 (64 ビットまたは 32 ビット) を確認します。
  3. ida を使用して分析します (Shift+F12 を使用して文字列を確認し、キーワード (フラグなど) を探します)。

ida 分析プロセス:

  1. Shift+F12 で文字列を確認し、キーワード (フラグなど) を探します。キーワードがない場合は、main 関数で情報を検索します。
  2. 文字列をダブルクリックして、その文字列が含まれている場所を確認します
  3. 文字列を参照して詳細なアドレスを表示します
  4. F5 を使用して逆アセンブルし、疑似コードを表示します
  5. 疑似コードを分析します (数値を選択した後、キーボードの「R」キーを押して数値を文字に変換します。変数を選択した後、キーボードの「X」キーを押して変数の相互参照を表示します)
  6. Shift+E で変数の値をエクスポートできます
  7. 計算を実行するコードを作成する

おすすめ

転載: blog.csdn.net/m0_62239233/article/details/130492093