https://ptr-yudai.hatenablog.com/entry/2019/07/01/143652にインスパイアされました。 順次追加予定。

対象となる問題

  • 問題のバイナリがある
  • writeupが見つかる or 自分で解ける

KalmarCTF (3/7 - 3/9)

Merger

To be updated

decore

To be updated

loadall.js

To be updated

KalmarVM

To be updated

Maestro Revenge

To be updated


tpctf (3/8 - 3/10)

writeup


utctf (3/14 - 3/16)

Tic Tac Toe

Stack BoFでuserが勝ったかどうかのフラグを書き換えることができる
solver

RETirement Plan

StackがRWXかつStack BoFがあるのでshellcode書くだけ
solver

secbof

Stack BoFがあるのでROPでOpen Read Write (ORW)やるだけ
solver

E-Corp Part 2

To be updated


AlpacaHack round 10 (3/23)

Oyster

0文字のパスワードを入力するとcred.errが0クリアされるので、system("/bin/sh")に到達できる。

solver

Kangaroo

index = - (0x10000000000000000 / 72)を入力するとOverflowが発生する。-256204778801521543を与えたところfn_clearが書き換えられた。

fn_clearprintf@pltに向けることでFSBが可能になったので、これを用いてlibcをleakした。これでsystem関数のアドレスが得られたので、fn_clearsystem関数に向けることでshellを得た。

solver

Takahashi

C++のpriority_queueが使われている。構造体はvectorと変わらないようです。(vectorの構造とexploit方法は C++のpwn/revで使うSTLコンテナの構造とバグパターン一覧を参照)

無限回、任意のタイミングでpushとpopができるということはすなわちheap上でのAAWを意味する。このプリミティブを用いてtcache_per_threadを書き換えることでtcache poisoningをして、priority_queueを破壊し、メンバをGOTに向けることでGOT Overwriteをした。

solver

giraffe.ko