LoginSignup
3
0

More than 3 years have passed since last update.

picoCTF 2019 asm3 - Points: 300

Posted at

問題

image.png

解いてみた

asm3(0xaeed09cb,0xb7acde91,0xb7facecd)のときの戻り値(eax)を求める問題です。

スタックの状態はこうでしょうか。

image.png

ソースを見てみます。

image.png

eax、ax、ah、alが出てきたので一度表にしておきます。

image.png

<+3>:   xor    eax,eax

これはeaxを0にする処理です。

<+5>:   mov    ah,BYTE PTR [ebp+0xb]

ahにebp+0xbを代入する。
ebp+0xbは何かというとebp+0xcが引数2なので、その直前に2桁。
つまり引数1の一番左の2桁になるのでaeとなります。
BYTEなので2桁です。
ahはae。

<+8>:   shl    ax,0x10

axを0x10bit左にシフトする。
ax=0xae00なので左に16bitシフトするとax=0x0000です。

<+12>:  sub    al,BYTE PTR [ebp+0xe]

alから[ebp+0xe]を引く。
ebp+0xeはacなので0x00-0xac=FFF~FF54
ってなるんですけど、BYTEってことなので2桁。FFFの部分はたぶん無視して良さそうなので
al=0x54

<+15>:  add    ah,BYTE PTR [ebp+0xd]

ahに[ebp+0xd]をたす。
[ebp+0xd]は0xde、ah=0x00なので
0x00+0xde=0xde

<+18>:  xor    ax,WORD PTR [ebp+0x12]

ax=0xde54
[ebp+0x12]=0xb7fa
0xde54 xor 0xb7fa = {flag}

ということでできました。

3
0
2

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
3
0