Capture The Frog

かえるぴょこぴょこw

MENU

GhidraでMalware TechのCTF Shell code編

前回と同じくghidraでMalwareTechのCTFを解いていく。

www.malwaretech.com

 

今回は、[Shellcode]に挑戦していく。

前回の[Hide and Seek]を解いてみた記事はこちら

 

 

Shellcode1

このプログラムのmain関数の役割はentry関数が果たしているので、entry関数に絞ります。

f:id:QWERTYtan:20211202154240p:plain

すると、右の逆コンパイルにentry関数がやっていることが表示されます。

今回は、ここに注目して進めていきます。

f:id:QWERTYtan:20211202154638p:plain

これを見ると、HeapAllocによってヒープ割り当てが18行目に行われていて、

docs.microsoft.com

それがlocal_8に代入されています。そして、そのまま下に降りてくると19行目に*local_8が0x404040とされていて、

20行目にstrlenが&AT_00404040の文字数をsVArlに格納しています。

そして最後にlpText内に格納して、それをメッセージボックス内で表示するようになっています。

明らかに0x404040が怪しいです。

そのため、0x404040を見てみると

f:id:QWERTYtan:20211202160817p:plain

暗号化されていますが、何やら文字列が出てきました。

おそらくこれがflagなのでしょう。

次はどのように暗号化されているかを見てみます。

文字列だと思われる部分を選択して、dを押してアセンブリを表示します。

f:id:QWERTYtan:20211202161227p:plain

0040406dでROL命令をしています。

donkeyhacks.zouri.jp

このコードは、文字列の各バイトを5回左シフトローテーションするだけです。

FLAG{SHELLCODE-ISNT-JUST-FOR-EXPLOITS}

f:id:QWERTYtan:20211202205220p:plain