最近の記事

[web3 security] Reentrancy attack

今回は、Smart contractの主な脆弱性であるReentrancy attackについて考える.  まず、始める前に、この脆弱性を用いた実際のreal-world例については、 以下のような攻撃が行われ、非常に多い被害をもたらした。 Parity Wallet Hack (November 2017) Reentrancyの脆弱性はParityのマルチ署名ウォレット契約で発見され、この脆弱性を悪用することで約3000万ドルの資金損失が発生した。 Lendf.Me

    • reversing.kr ImagePrc

      今回の問題は以下のようなBitmapの推論問題である。 早速IDA Proによりデバッグしてもると、以下のような流れを確認できる。 まず、CreateCompatibleBitmap関数により、200x150のピクセルを持ったbitmapを生成する。 次に、GetDIBits関数からポインターされているBitmapのBitを検索して、bufferにコピーする。 上記のコードからわかるのは、このプログラムが受けるデータは0x18、つまり、24BitのBitmapとなってい

      • reversing.kr Easy_KeygenMe writeup

        今回の問題は、入力されたデータに対するシリアルナンバーを見つける問題である。 IDA Proを用いて、main関数を見ると、 char形の変数v7に100 byteの大きさまで入力を受けてそれを用いてxor演算を行う。 この演算を考えると、v7配列に入力されたデータをそのlengthの大きさで 繰り返しながら、v6[0]からv6[2]のそれぞれの値とxor演算をする。その結果はbuffer変数に入力される。 そして、シリアルナンバーを入力し、その値とbufferの値が

        • reversing.kr Easy_ELF writeup

          この問題は、入力値に対する答えを見つける問題である。 まず、このバイナリを実行すると、次のように入力についての結果を出力する。 IDA Proを用いて、見ると、次のように動く。 入力を受け、eaxの値が1の場合、wrongを、それ以外はsub_80484F7関数を呼び出し、Correct!を出力する。 main関数をもっと詳しく見ると、 scanf(“%s”, &buff)のように、文字列を入力され、その文字列のポインターを用いて、sub_8048451関数を呼び出

        [web3 security] Reentrancy attack