【Hack The Box】Find The Easy Pass_日本語Walkthrough

# 概要
Hack The Box（以下、HTB）のRetiredチャレンジである"Find The Easy Pass"のwriteupです。

# 利用ツール
1. ghidra
https://ghidra-sre.org/

2. immunity Debugger
https://www.immunityinc.com/products/debugger/

# Walkthrough
## 1. ファイルのダウンロード
* HTBの"Find The Easy Pass"のページから対象のファイルをダウンロードしてください。
    ![スクリーンショット 2023-06-12 180140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/d3dd7ad3-0d58-2bce-9558-d0d9a2390fe7.png)

ダウンロードしたzipファイルを解凍すると
>EasyPass.exe

が入っている

## 2. ファイルの素性を簡単に確認
* fileコマンドでファイルについて確認する
    ```bash
    cd <ファイルの保存先>
    file EasyPass.exe
    ```

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/b5d002e8-14fc-3729-3306-c66463f9a448.png)
    Windowsの PE 32bit 実行ファイルであることを確認

## 3. ファイルを実行してみる
* ファイルをダブルクリックで実行してみます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/3690832c-9377-7307-98c7-68b82c175dde.png)

* Passwordの入力フォームがあるので適当に入力して"Check Password"をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/b1efdf7f-1e2c-0ec2-f053-dc9a3bb79e77.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/76f7ecd3-dcb3-7b68-d0a7-dfd35b208254.png)

"Wrong Password"が表示されます。
たぶん正解パスワードとの一致を検証していることが想定されます。

## 4. ghidraで解析
ghidraのインストールなどはご自身で実施ください。
ghidraとはファイルの解析などに利用できるリバースエンジニアリングツールです。

ghidra起動後、以下の手順で解析を進めます。

* 新規プロジェクトの作成
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/30f08b05-b49b-237e-cd18-9b284f9d84e1.png)

    任意の場所に任意の名前でプロジェクトを作成します。

* 対象ファイルのインポート
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/9a2bb26a-8d56-1289-6122-d2de7e477a79.png)

    EasyPass.exeを指定しインポートします。

* インポートしたEasyPass.exeをクリックし、デフォルトのままAnalyzeで解析を進めます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/4f26bc25-679f-04d7-cacb-f53ced510db0.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/044fba6d-229c-e85e-b22e-e254925263f9.png)

    しばらく解析が進みます。


* 左上のWindowタブから"Defined Strings"を開きます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/d1666139-1e71-59c8-a75f-bd0a0d5b3c1c.png)

* Defined StringsウィンドウのFilterにファイル実行時に確認した"Wrong Password"を入力します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/7712794f-41f2-c691-da2c-5c8b438b9c2e.png)

* 一件ヒットしたのでダブルクリックで表示し、対象のStringの位置で右クリック
References -> Show References To Address で対象文字列が参照されているアドレスがわかる
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/17beb920-4f6e-8d02-dbc6-9ed72460604b.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/0f8a66b9-bcfd-d4f1-495b-74a7e248ee0b.png)

* この状態で上部のツリー上のボタンを押すとツリーが表示される
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/d6f7a42e-0f60-919d-baf1-130c48088a31.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/3401a88b-9fde-4852-373f-87d81aa194e0.png)

    00454131のアドレスの関数から"Good~"と"Wrong~"に分岐していることがわかる。

## 5. immunity Debuggerで解析
immunity Debuggerを使えばbreakpointなどを設定し実行時の動作を追いかけることができる。

* 起動後、File -> OpenでEasyPass.exeを開く
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/97096757-823a-be0e-430f-c4682f0310b5.png)

* ghidraで解析したアドレス「00454131」を選択して右クリック -> Breakpoint -> ToggleでBreakpointを設定
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/ecd5d160-b0b0-9468-28e9-fc2628afba0c.png)

* 左上の再生ボタンでファイルを実行、出てきたウィンドウに再び適当な文字を入れて"Check Password"を押す
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/38a0b011-e772-d8b3-ea06-b6d0663ea8e1.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/d11249f0-9a6f-1038-9d2b-e913669219ad.png)

* immunity Debuggerの右側のRegistersで入力文字列と正解文字列の比較していることが変わる
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/20dc0c80-3625-c080-f0fe-5dae3e653417.png)

    2つ目のASCII文字が正解のパスワードになる
    
# 6. Submit Flag
* 正解のパスワードがわかったので、提出のフォーマットに合わせてフラグを提出する。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3475030/7fc1c8cb-5efa-7fe5-60cc-40a07a940297.png)

>提出時のフォーマット : HTB{<見つけたパスワード>}