AndroidStudioでのGithub連携がUN/PWで出来なくなった?
この間、新しいPCに「AndroidStudio」を入れてGithubと連携しようとしたら正しいユーザ名とパスワードでログインしても「404エラー」が発生してしまいました。
ネットで調べた噂によると最近のGithubの仕様変更で出来なくなった可能性がある(2021/3月時点)、とのことでした。
解決法としてはGithubでアクセストークンを発行して連携する方法があって今回、初めてやってみたのでメモ書き程度に残しておこうと思いこの記事を書こうと思いました。
目次
- 目次
- 私の環境
- Githubでアクセストークンを発行する
- Gitの設定
- AndroidStudioでの設定とGithubへのPush
- おまけ(2回目以降のCommitとPush)
- まとめ
- 参考情報・引用
私の環境
OS:Windows10
AndroidStudio:4.13
Git:2.28.0
Githubでアクセストークンを発行する
まずは上記画像で赤く囲まれた部分をクリックしてその中の「Settings」を開いてください。
すると上記画像の様な画面が表示されると思うので、次に「Developer settings」を開いてください。
そして「Personal access tokens」を選択してください。
すると以下のような画面になると思います。
ここで自分が作成したアクセストークンの一覧を確認できます。
新しく作成する場合は赤く囲んだ「Generate new token」をクリックします。
この画面でアクセストークンに付与する権限の設定を行っていきます。
注意!:ここで設定するアクセストークンの権限は間違えないようにしてください
設定項目を以下に示します。
Note...アクセストークンを識別するための任意の名前(今回私はhogehogeで作成) repo...プライベートリポジトリに関する操作に必要 workflow...Githubアクションワークフローを更新するのに必要 admin:org...組織やチームのプロジェクトの読み書きに必要 admin:repo_hook...この項目にチェックを入れないと追加のリポジトリを後で作成出来なくなる gist...要旨の作成に必要
以上の通りに設定できていると下記画像のようにチェックボックスにチェックが入っていると思います。
その後「Generate token」をクリックして以下の画像のようにアクセストークンが表示されればOKです!
実際には黒く塗りつぶしているところに「アクセストークン」が表示されています。
注意!:表示されるアクセストークンはこの時点でメモ帳等に保存しておいてください。一度しか表示されません!(忘れた場合は再発行することになります)
Gitの設定
既に設定されている方は問題ないのですが、この先のセクションでGithubと連携した場合でもこの設定が上手くいっていないと、ちょっと面倒くさいことになるのでやっておきましょう!
設定する項目は「ユーザ名」と「メールアドレス」です。
この項目がGithubにある「ユーザ名」と「メールアドレス」と異なると、コミットしたユーザ名等が第3者になってしまいます
(私もここで躓いて、コミットしたユーザ名が本名になっていて大変でした(笑))
どちらも簡単に変更することが出来てそれぞれ以下のコマンドを実行するだけです!
git config --global user.name ユーザー名 git config --global user.email メールアドレス
無事、変更できたかどうかを以下のコマンドを実行して確認します。
git config --list
「user.name」と「user.email」が先ほど設定した値に変更されていたらOKです!
AndroidStudioでの設定とGithubへのPush
AndroidStudioでGithubと連携させたいプロジェクトを開きます。
その後「VCS」を選択して「Enable Version Control Integration...」をクリック。
次に表示される画面にはデフォルトの「Git」を選択
上手くいけば、上の画像のようにファイル名が赤色になるはずです。
その後、もう一度「VCS」をクリックして次は「Import into Version Contorol」から「Share Project on Github」をクリックするとGithubのログイン情報を求められます。
この時「Token」が表示されておらず「UserName/Password」の入力を求められている場合はウィンドウ右上に「Use Token」という青色の文字の部分をクリックすると画面が切り替わります!
そして「Token」の部分にGithubでアクセストークンを発行するで作成した「Token」をコピー&ペーストして「Log In」ボタンをクリックすると、下記の画像の様なウィンドウが表示されると思います。
今回私は下記のような設定にしていますが、ここは皆さんの自由でOKです!
Repository name:Test(Private) Remote:origin Description:none
後は「Share」ボタンをクリック!!
GithubにPushするファイルを選択、コミットメッセージを入力して「Add」ボタンをクリックするとGithubにPushされます。
注意!:AndroidStudioではプロジェクトごとにGithub連携を行う必要があります。よって1つのプロジェクトで連携をしたからといって他のプロジェクトでも連携がされていると言う訳ではありません!!
おまけ(2回目以降のCommitとPush)
AndroidStudioでの設定とGithubへのPushでは最初の1回目のコミットとPushの説明をしました。
では2回目以降は…?
これも簡単です。
「VCS」から「Commit」をクリックしてコミットするファイルとコミットメッセージを入力(この時に注意メッセージが表示された場合は気にせず「Commit」を選択)、その後もう一度「VCS」から「Git」そして「Push」をクリックすれば、Pushウィンドウが表示されるので「Push」ボタンをクリック!(ここでも注意メッセージが表示された場合は「Marge」をクリック)
すると、Githubへの「Push」行われます。
まとめ
以上が「AndroidStudio」で「Token」を使ってGithub連携を行う手法になります。
結構、最近の話題ぽかったので調べても情報が少なくて大変だったので大変でした!(…どちらのバグかわかりませんが、早く修正させるといいですね(笑))
参考情報・引用
Android端末にDrozerを入れて色々と遊ぶ
前回まででUbuntuにDrozerを入れるところまでは終わったので今回はAndroid端末に実際にDrozerを入れて遊んでみようと思います。
目次
私の環境
AndroidOS:Android 8.0(エミュレータ)
AndroidStudio:4.13
ホストOS:Windows10
ゲストOS:Ubuntu20.04
Drozer-agent.apkのダウンロード
前回と同様、公式GithubページからDrozerを使うのに必要なapkファイルをダウンロードします。
ちなみに現時点(2021/03/26)でのapkの最新バージョンは2.34ですね。(…あれ?よくみると開発止まってない?)
apkファイルをダウンロードしたら次はエミュレータ(実機)にインストールするだけです
Drozer-agent.apkのインストール
ここからは実機でもエミュレータでも「AndroidStudio」を使います。
「AndroidStudio」を開くと下の方に「Terminal」があると思うのでそれを選択してください。
開くと下記画像のようになっていると思います。
そして先ほどダウンロードしたapkファイルを「platform-tools」直下に移動させます。
(別に必ずしもここに移動させる必要もないのですが、後々の面倒を考えるとここの方がいいです)
この時点でエミュレータ(もしくは実機)を起動してホストと接続しておきましょう
後はご存じの方もいるとは思いますが下記コマンドを「Androidstudio」の「Terminal」上で実行してapkファイルをインストールさせます。
$ adb install drozer-agent-x.x.x.apk (xの部分は各自置き換え)
インストールが成功したならばホーム画面に「drozer Agent」というアプリが新たに追加されたと思います。
私の環境では上記の様に表示されました。
起動
起動をする前にエミュレータの方のみ下記のコマンドを「Androidstudio」の「Terminal」で実行してほしいです。
$ adb forward tcp:31415 tcp:31415
その後、実機もエミュレータの方もDrozerアプリを起動させてください。
起動させると以下のような画像のトップ画面が表示されると思うので、画面下部の「Embedded Server」の部分をタップして「ON」にしてください。
あとは前回の記事でインストールしたDrozer(私の環境ではUbuntu20.04)と繋げる作業だけです。
$ drozer console connect
エミュレータの方
エミュレータの方のコマンドはシンプルです。
$ drozer console connect
実機の方
実機の方はAndroid端末のIPアドレスを指定する必要があります。
$ drozer console connect --server xxx.xxx.x.xxx (xは各自Android端末のIPで置き換え)
両方とも下記画像のようになれば接続成功です!
色々遊んでみる
ここからはDrozerが持っている機能を使って色々と遊んでみましょう!!
(今回は2つの状況を再現します)
注意!:この先の演習で使うアプリを演習が終わった後も端末内に残しておくことは推奨しません
clipboardの盗聴
この機能を用いることでclipボードに共有されている情報を取得できます。
(つまり悪意ある第3者アプリが情報を盗めるかどうかを調査出来る)
準備
clipboardの盗聴に使うモジュールを検索してみましょう。
dz > module search clipboard
私の環境では「metall0id.capture.clipboard」が見つかりました。
ちなみにですが下記コマンドを実行することで引数に指定したmodule名の詳細情報を確認出来ます。
dz > module search metall0id.capture.clipboard -d
このモジュールをインストールすれば後はOKです。
dz > module install metall0id.capture.clipboard
(…私の環境では既にインストールされているので「1 already」ってなってますけど)
実践
今回はそれっぽい状況にマッチするアプリをこちらで用意しました。
ここからapkファイルをダウンロード、そしてインストールしてください。
起動すると上の画像の様なトップ画面が起動すると思います。
また、このアプリの流れは以下のようになっています。
1.パスワードを入力(n4DL2Udc) 2.OKボタンをタップするともう一度パスワードを求められる 3.もう一度パスワードを入力してOKボタンをタップ 4.入力が正しければ「Success!!」というトーストが表示される
しかし3の時、ユーザがもう一度パスワードを入力するのが面倒で1のパスワードをクリップボードにコピーした場合が非常にマズイです!
では実際にパスワードをクリップボードにコピーして先ほどインストールしたmodule(metall0id.post.clipboard)を実行させてみましょう!
moduleを実行するコマンドは以下の通りです
dz > run post.capture.clipboard
つまり、悪意あるアプリがclipboardを盗聴する機能を持っていたとすると簡単にパスワード(機密情報)が漏洩することになります。
脆弱なContentProvider
次は脆弱な「ContentProvider」で実装されたDBをDrozerを用いて盗聴する手法について説明します!
準備
特になし!(初期状態でDrozerに入っているmoduleで出来ます)
実践
このセクションもこちらで脆弱なContentProviderによって実装されたDBを使用しているアプリを用意しておきましたので、こちらから該当apkファイルをダウンロード、そしてインストールしてください。
アプリのトップ画面にはそれぞれのユーザが表示されています。
アプリ画面内の説明からadminに関する情報を盗めればOKのようですね。
ちなみにこのアプリの簡単な概要を先に説明すると以下のようになります。
・脆弱なContentProviderを用いてDBを作成 ・UserとAdminのテーブルを差別化 ・名前だけ表示(E-mail,passwordは非表示)
今回のような場合に役に立つ「module」がいくつかあるので順に使いながら紹介していきます。
まずアプリケーションのコンテンツプロバイダの動的解析を開始するには、アタックサーフェイスを列挙する必要があるので「app.provider.info」を使います。
dz > run app.provider.info -a com.websarva.wings.android.drozer_content_provider
このことからこのアプリは1つのContentProviderがエクスポートされ、パーミッションも必要ないことが分かります。
AndroidのContentProviderに対しては「content://」で始めるのですが、まだ完全にパスが判明したわけではありません。
これを解決する「scanner.provider.finduris」を用いてパスを導き出していきましょう!
dz > run scanner.provider.finduris -a com.websarva.wings.android.drozer_content_provider
実行してみると、いかにも怪しい「admin」というcontentが見つかりましたね!
最後にこのcontentに対してアクセスして内容を見てみましょう。
使うmoduleは「app.privider.query」です。
dz > run app.provider.query content://com.websarva.wings.android.drozer_content_provider/admin/ --vertical
無事、adminに関する情報を抽出出来ました!!
(passwordはbase64でエンコードしてます)
まとめ
どうでしたでしょうか?
私は今回Drozerを実際に使ってみて意外と多くの機能があって便利と思いました。
まだまだ使っていない機能が多くあるのでまたの機会に紹介できたらいいなと思います!
参考情報
https://qiita.com/mitsu9/items/1457331992e1eb02b29f
https://codechacha.com/ja/android-contentprovider/
http://ichitcltk.hustle.ne.jp/gudon2/index.php?pageType=file&id=Android033_ContentProvider
Ubutnu20.04にDrozerをダウンロード・インストールしてみた
Androidの動的解析を行う際にDrozerというツールが便利という話を聞いたのでダウンロード・インストールしてみようと思ったのですが、かなり手間取ったので記事に残しておくことにしました。
Drozerとは
Drozer(以前のMercury)は、Android向けの主要なセキュリティテストフレームワークです。
また、Drozerを使用するとアプリの役割を引き受け、Dalvik VM、他のアプリのIPCエンドポイント、および基盤となるOSと対話することで、アプリやデバイスのセキュリティの脆弱性を検索できます。
Drozerは、Androidの公開エクスプロイトを使用、共有、理解するのに役立つツールを提供します。これは、悪用またはソーシャルエンジニアリングを通じてDrozerAgentをデバイスに展開するのに役立ちます。イタチ(MWRの高度な悪用ペイロード)を使用すると、Drozerは、完全なエージェントをインストールするか、実行中のプロセスに限定されたエージェントを挿入するか、リモートアクセスツール(RAT)として機能するリバースシェルを接続することにより、使用可能なアクセス許可を最大化できます。
私の初期環境
仮想OS:Ubuntu20.04
Python 3.8.5
openjdk version "11.0.10"
Drozerに必要な環境
- Python 2.7
- Protobuf 2.6 以上
- Pyopenssl 16.2 以上
- Twisted 10.2 以上
- Java Development Kit 1.7
Python 2.7のインストール
この時点でPython2系が入っていない人は下記のコマンドをターミナルで実行しましょう。
$sudo apt install python2
その後、Python2系に対応したpipをインストールするのですが、ここで早速問題が発生しました。
なんとpipが上手くインストール出来ませんでした!
普段私はpipをインストールする際に『get-pip.py』を使うのですが最近のアップデートでPython3系のインストールのみ対応に変更したようで、何度実行してもpipがエラーが発生してインストールされませんでした。
そこで『get-pip.py』のアーカイブを下記のURLからダウンロードしました。
その後、下記のコマンドでインストールを行うことで上手くインストール出来ました。
$sudo python2 get-pip.py
Protobuf 2.6 以上のインストール
ここから少し同じような作業が続きます。
$sudo pip install protobuf
Pyopenssl 16.2 以上のインストール
$sudo pip install pyOpenSSL
Twisted 10.2 以上のインストール
$sudo pip install Twisted
Java Development Kit 1.7のインストール
ここで少し躓きました。
このDrozerではjavaの環境が必要になり、筆者の環境にもjavaのオープンソースである『openjdk』が入っています。
では何が大変かというとこのDrozer、実はversion7でしか動きません!
ここで私の環境を見てみてください……はい、version11ですね。
ということで、明示的にversion7をインストールする方法を解説します。
まず、version7をインストールするので以下のコマンドを順に実行してください。
# apt update; apt install -y software-properties-common # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 # apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main' # apt update; apt install -y zulu-7
OS内に1つのjdkしか入っていないなら問題ないのですが、2つ以上の場合は以下の設定を行ってください。
まず以下のコマンドを実行してください。
$sudo update-alternatives --config java
ここでは先ほどインストールしたversionを選択してください。
その後、vimなどのエディタで
$sudo vim /etc/enviroment
を開き、以下の文を追記します。
JAVA_HOME=“/usr/lib/jvm/zulu7/jre/bin/java“
最後に以下のコマンドを実行して終了です。
$sudo source /etc/enviroment
Drozerのダウンロード
ここからようやく、Drozerのダウンロード開始です。
まずDrozerの公式GitHubページからDrozer(.tar.gz)の最新バージョンをダウンロードして解凍してください。
すると以下の様な構成のフォルダになっていると思います。
Drozerのインストール
勿論、この後 setup.py
を実行すれば良いように感じますがこの状態で実行してもスクリプトに問題があるのか
ImportEroor No module named src.drozer
上記のようなエラーが発生してしまいます。
そこでエディタ(vim等)で setup.py
を開き、スクリプトを書き換えましょう!
書き換える場所は1か所だけで
from src.drozer import meta
の部分を
from drozer import meta
に書き換えて保存するだけです。
その後、下記のコマンドを実行することで依存関係を解決させます。
$pip install drozer
後は念のため、PATHも通しておくことにします。
環境によって異なると思うので該当部分を順次書き換えながら以下のようにPATHを通してください。
$echo \$PYTHONPATH=$PYTHONPATH:/path/to/drozer/src >> ~/.profile $echo PATH=/home/ユーザ名/Downloads(drozerがダウンロードされている場所)/drozer-2.4.4/bin:$PATH
最後に setup.py
を以下のように実行して終了です。
$python setup.py build
まとめ
いかがですか。無事、ダウンロードとインストールが出来ましたか?
私は最初、Drozerの公式ドキュメントを見ながらインストール作業を行っていたんですけどエラーばかり出て全くインストール出来ずに苦戦しました(笑)
さて、ここまで作業を終えて早速動かそうと思ってもAndroidにDrozerサーバーが入ってないと使うことが出来ないので、次回は実際にAndroidにDrozerを入れてサンプル問題を使って遊んでいきたいと思います。
参考情報
Ghidraを使ってCTFの問題を解いてみる
前回の記事でGhidraのインストールと基本操作を学習したので、今回はGhidraを使って実際にCTFの問題を解いてみましょう。
まだ、前回の記事を見ていない人は下記のリンクからどうぞ!
問題紹介
今回解析した問題はSECCON_CTF_Beginner'sのmaskという問題です。
問題ファイルは下記のサイトにあるのでダウンロードしてみてください。
実際に解いてみる
1. fileコマンドでmaskファイルの形式を調べる
するとx86/x64のELF形式のファイルだと分かる。よって、Ghidraでファイルの中身を見てみることにする。
2. Ghidraで解析作業をする
maskファイルをGhidraで読み込んで解析すると
undefined8 main(int param_1,long param_2) { int input_len; size_t input_len; long in_FS_OFFSET; int (long)idx; byte input_arg [64]; byte param1 [64]; byte param2 [72]; long local_10; local_10 = *(long *)(in_FS_OFFSET + 0x28); if (param_1 == 1) { puts("Usage: ./mask [FLAG]"); } else { strcpy((char *)input_arg,*(char **)(param_2 + 8)); input_len = strlen((char *)input_arg); input_len = (int)sVar2; puts("Putting on masks..."); (long)idx = 0; while ((long)idx < iVar1) { param1[(long)idx] = input_arg[(long)idx] & 0x75; param2[(long)idx] = input_arg[(long)idx] & 0xeb; (long)idx = (long)idx + 1; } param1[input_len] = 0; param2[input_len] = 0; puts((char *)param1); puts((char *)param2); input_len = strcmp((char *)param1,"atd4`qdedtUpetepqeUdaaeUeaqau"); if ((input_len == 0) && (input_len = strcmp((char *)param2,"c`b bk`kj`KbababcaKbacaKiacki"), input_len == 0) ) { puts("Correct! Submit your FLAG."); } else { puts("Wrong FLAG. Try again."); } } if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) { return 0; } /* WARNING: Subroutine does not return */ __stack_chk_fail(); }すると上のようなソースコードが「decompiler」ウィンドウに表示されると思います。
(上のコードは分かりやすいように若干書き換えてあります)
3. maskファイルがどのようなプログラムなのか考える
まず、先ほどのGhidraで解析したソースコードの以下の部分に注目してください。
param1[(long)idx] = input_arg[(long)idx] & 0x75; param2[(long)idx] = input_arg[(long)idx] & 0xeb;
上記よりparam1には入力した任意の文字列と0x75との論理積が代入され、
param2の値には入力した任意の文字列と0xebとの論理積が代入される。
また、下記のコードより
input_len = strcmp((char *)param1,"atd4`qdedtUpetepqeUdaaeUeaqau"); if ((input_len == 0) && (input_len = strcmp((char *)param2,"c`b bk`kj`KbababcaKbacaKiacki"), input_len == 0) ) { puts("Correct! Submit your FLAG."); }
param1が『atd4`qdedtUpetepqeUdaaeUeaqau』
param2が『c`b bk`kj`KbababcaKbacaKiacki』になるのであれば、それがflagと言える。
4. 解析コードを書いてみる
先ほど考えたmaskのアルゴリズムからflagを逆算するコードをpythonで書いてみる。
また、flag文字列はparam1かparam2のどちらかになればいい(論理和)のでORを求めるのが良いと思う。
# -*- coding: utf-8 -*- param1 = 'atd4`qdedtUpetepqeUdaaeUeaqau' param2 = 'c`b bk`kj`KbababcaKbacaKiacki' ans = '' for i,j in zip(param1, param2): ans += chr(ord(i) | ord(j)) # ordでASCIを取得、chrでASCIを文字列にする print(ans)
これを実行することで以下のflagを得ることが出来た。
ctf4b{dont_reverse_face_mask}
Ghidraのインストールと基本操作
今回は今話題となっているGhidraのインストール手順や、簡単な基本操作を紹介していきたいと思います。
Ghidraとは
Ghidraは、国家安全保障局が開発した無料のオープンソースリバースエンジニアリングツールです。バイナリは2019年3月のRSA会議でリリースされました。ソースは1か月後にGitHubで公開されました。(wikipedia引用)
Ghidraと似たようなツールにIDAというツールが存在します。このツールもGhidraと同じく逆アセンブルが可能なのですが、有償版のIDAProでしかデバッグ機能がありません。
その反面、IDAにも劣る部分もあるのですがGhidraはオープンソースソフトウェアなので様々な方々からプラグイン(拡張機能)が配布されると思うのでいずれはIDAより優秀なツールになるのでは……?
Ghidraのインストール要件
- メモリ4GB推奨
- 1GBのストレージ容量
- OracleJDKのインストール
OracleJDKのインストール方法(Ubuntuの場合)
こちらのサイトを参考にしました。
1. アップデートの確認を行う
sudo apt update
2. javaが自分の環境に導入されているか確認する
java --version
この時にjavaのバージョンが表示されている人は既にjavaが導入されているので大丈夫です。
また、下記のメッセージが表示されている人はjavaが導入されていないので、javaを導入しましょう。
Command 'java' not found, but can be installed with:
3. まずJREを導入する。
sudo apt install default-jre
これでJREの導入は終了です。
さて、次にJDKを導入するのですが実はこの時点で既にJDKが導入されている可能性があります。
もう一度、
java --version
を実行しましょう。
ここで(2020年5月時点)
openjdk 11.0.7 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu218.04) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)
と表示されていればOKです。
最近の環境だとほぼ確実にこの時点でJDKがインストールされるようなので、この時点でJDKがインストールされてない方は参考サイトに書いてあることを実行してみてください。(ここでは説明を省略します)
Ghidraのインストール
それでは実際にGhidraをインストールしていきましょう。
1. [Ghidraの公式サイト](https://ghidra-sre.org/)にアクセス
2. ダウンロードボタンをクリックし、ダウンロード
3. ダウンロードしたZIPファイルを解凍してください
(Ghidraにインストーラは存在しないため、これでGhidraのインストール作業は終了になります。)
Ghidraの起動
1. 端末を起動し先ほど解凍したGhidraのディレクトリに移動してください
2. ghidraRunを実行します。
似たような名前のghidraRun.batもあるので間違えないようにしてください
(ghidraRun.batはwindows用の実行ファイルです)
3. 表示されるラインセンスに同意してください
4. 『Ghidra:NO ACTIVE PROJRCT』、『Ghidra HELP』と『Tip of the Day』の3つが開かれます
また、『Ghidra:NO ACTIVE PROJRCT』以外は閉じて構いません。
5. 新しいプロジェクトを作成します
「File」から「New Project」を選択してください
その後、プロジェクトを共有するか聞かれるので今回は「Non-Shared Project」を選択しました。
そしてプロジェクトを作成するディレクトリの場所とプロジェクトの名前を設定します。
これでプロジェクトの作成は終了です。
6. ファイルを解析する
まず初めに、『Project』ウィンドウのドラゴンのアイコンをクリックする。
そうすると解析ウィンドウが表示されるので、上の「File」タブから「Import File」をクリックし解析したいファイルの選択画面を表示させます。
今回コンパイルしたソースコードは以下の通りです。
#include <stdio.h> int main(void){ int a, b; a = 5; b = 10; printf("answer_is_%d\n", a + b); return 0; }
読み込ませたいファイルを選択したら、「Select File To Inport」をクリックしてファイルを読み込ませます。
その後、『フォーマット設定』や『言語設定』を設定した後にOKボタンをクリックすることでファイルの読み込みが完了します。
6. 読み込んだファイルを解析する
先ほどのファイルの読み込み作業が終わると直ぐに「Analyze」ウィンドウが開くので「Yes」をクリックしてください。
すると解析オプションの設定を聞かれますが普通は初期設定で構わないので「Analyze」ボタンをクリックしてください。
これで解析作業は終了です。
ここまで終了すると『Decompiler』ウィンドウに元のソースコードに近いものが表示されているのではないでしょうか?
また、以下の記事で実際にGhidraを用いてCTFの問題を解いているので見てみてください。