a

よろしくのキワミ

Reversing進捗

Reversingの進捗

・E/asyC/rac/k

実行するとInput boxが表示されてパスワードを聞いてくる

f:id:toDo:20190105142848p:plain

ス/ター・ウォ//ーズの綴り違う気がしますね。

まずは文字列を見てみる

f:id:toDo:20190105143716p:plain

Incorrect Password

パスワードが通らなかった時に表示される文字が出ている。

通った時に表示される文字はCongratulation !!っぽいのでそのあたりの処理を追えば解けそうですね。

しかしその前に見えてしまった文字列がある。

"5y"
"R3versing"

CTFなどの競技ではそれっぽく見える文字列がよく使用されていることがある。

例えば

O = 0

などだ。

上の"R3versing"は"REversing"をもじっているのでは。

もじるとは
滑稽(こっけい)味を出すため、もとの表現に似せた口調(くちょう)の言い方をする。(Google出典)

つまりパスワードはそういうことであると分かる。

f:id:toDo:20190105145821p:plain

そういうことではないようだ。

f:id:toDo:20190105150906p:plain

こういうことである。

"R3versing"の前の文字に"5y"とある。

5はSに見えなくもないのであとは推理でいけますねメガネクイー

競技ならこれでいいかもしれないが今回は勉強しているつもりなので処理を追ってみる。 Congratulation !!を参照している部分に飛んでみる。 f:id:toDo:20190105151656p:plain Congratulation !!が表示されそうな直前で比較(cmp)し、合わなければ401135番地に飛んでいる(jne)

もう少しさかのぼってみる。 f:id:toDo:20190105152823p:plain f:id:toDo:20190105152833p:plain f:id:toDo:20190105152838p:plain

デバッガが優秀なので文字列が表示されている。

上の画像を見ると、このプログラムでは一度の比較で文字列が合っているかを判断しているのではなく、 スタックに格納している各文字列と何度か比較していることがわかる(多分そう)

✖ "AAbbCC" == "AAbbCC"
〇 "AA" == "AA" && "bb" == "bb" && "CC" == "CC"

これでこのプログラムの謎はすべて解いた。

結論

デバッガが優秀すぎると学習する身としては困る。

プライバシーポリシー お問い合わせ