![見出し画像](https://assets.st-note.com/production/uploads/images/99288485/rectangle_large_type_2_4c1006942b906c28e82ddb8cb223b4c1.png?width=800)
CpawCTF Writeup Q23
こんばんは。
今回はReversingです。
またやらかしたらしいです。
またやらかした!
またprintf()をし忘れたプログラムが見つかった。
とある暗号を解くプログラムらしい…
ということでファイルを渡されます。
ひとまずfileコマンドです。
![](https://assets.st-note.com/img/1677741934944-9uwaPVEajz.png?width=800)
ELFですね。
ではデコンパイルしていきましょう。
![](https://assets.st-note.com/img/1677742597867-krKM972Nu5.png?width=800)
ちょっとだけ下見切れてますがこんな感じです。
これだけでは少し見ずらいので関数をリネームしていきます。
![](https://assets.st-note.com/img/1677743741998-K5WY3uwhG5.png)
かなり見やすくなったんじゃないでしょうか。
これで重要なのは
「list_1に16進数を格納」
「2つ目のforループでlist_1の16進数をlist_2に0x19との排他的ORで格納」
という点です。
この2点を自分でc言語を書いて実行してみます。
![](https://assets.st-note.com/img/1677745111063-s7kpbKVPEK.png)
こんな感じでprintfを追加して書いてみました。
コンパイルして実行します。
![](https://assets.st-note.com/img/1677745081492-d1YSYMn9ag.png)
あっ…そういえば文字列に変えるの忘れてました…
まあwebのASCII変換ツールでいいでしょう。
![](https://assets.st-note.com/img/1677745493700-XbDZaITQGh.png?width=800)
消してるので空白に見えますが、こんな感じでflagが入手できました。
いかがでしたでしょうか。
私個人としてはデコンパイラをうまく使いこなせないのが課題です….
もっと勉強したいですね….
前回
次回
この記事が気に入ったらサポートをしてみませんか?