0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

picoCTF 2018 assembly-1 - Points: 200

Posted at

問題

image.png

解いてみた

asm1(0xcd)のときにリターンは何かという問題です。
似たような問題が以前もありました。
picoCTF 2018 assembly-0 - Points: 150

まずはダウンロードしてみます。
問題のとおり、アセンブラでした。

image.png

まず前提として以下は忘れないように。

  • 引数はebp+0x8に入っている
  • 戻り値は関数が終わったときのeax

順に追っていきましょう。

9行目の

cmp	DWORD PTR [ebp+0x8],0xde

で0xcdと0xdeを比較しています。
もちろん異なりまして0xcd<0xdeです。

10行目の

jg 	part_a

は「>」のときにジャンプする命令なので、今回はジャンプしません。

次に11行目の

cmp	DWORD PTR [ebp+0x8],0x8

は0xcdと0x8の比較です。
もちろん0xcdと0x8は異なります。

12行目の

jne	part_b

は等しくなければジャンプなので22行目にジャンプします。

23行目の

mov	eax,DWORD PTR [ebp+0x8]

でeaxに0xcdが代入されます。

24行目の

sub	eax,0x3

はeax-0x3をeaxに代入します。
0xcd-0x3は0xcaなのでeaxが0xcaになります。

25行目の

jmp	part_d

でジャンプ。

part_dはretがあるので関数の終了。
あれ?これで終わり?
他のところはダミーでしょうか?

とりあえず現状のeaxの値は0xcaなのでこれを入れてみると正解でしたー。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?