読者です 読者をやめる 読者になる 読者になる

撤退

情報系学科所属

katagaitai #7, #8 に行った

katagaitai #7, #8 に行った

今回は2日連続で長丁場になりましたが,最後まで濃密でとても面白かったです. 引き続き頑張っていきます.

続きを読む

CTF for ビギナーズ Final に参加した。( bin 300 Writeup )

SECCON Online 予選で pwn が全くできないということが身に染みて分かったので,論発表直前でしたが ctf4b final に行きました. 関係者の皆様ありがとうございました.

結果は4位だったのでとても辛かったです. 2問目の forensic 200, web 200 の union select を用いた sqli で凡ミスをしてしまったのが原因といったところだと思います. 引き続き頑張っていきたいと思います.

bin300 の Write up だけ書こうと思います.

ctf4b bin 300 Cipher

checksec

RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FORTIFY Fortified Fortifiable  FILE
Partial RELRO   Canary found      NX enabled    No PIE          No RPATH   No RUNPATH   Yes     0               4    bin300

解法

main() 関数にて流れを追うと次のことがわかる.

  • 文字列を入力に取る
  • check_flag() 関数を呼ぶ
  • 戻り値が 0 なら "Correct!\n" そうでないなら "Wrong...\n" を出力する.

Flag を入力すると check_flag() 関数の戻り値が 0 になることがわかる. check_flag() 関数は次のようなことを行っている.

int check_flag(char *input_str)
{
  char encrypted[] = encrypted flag;
  char* buf;

  srand(0);
  buf = malloc(strlen(input_str) + 1);

  for (int i = 0; input_str[i]; i++)
    buf[i] = input_str[i] ^ rand();

  return strcmp(encrypted, buf);
}

それぞれの変数とアドレスの対応は次のようになっている.

  • [ebp-0x2c] buf
  • [ebp-0x30] i
  • [ebp-0x3c] input_str

solver は次にようになった.

LKMのページを userspace にマップする。

LKMのページを userspace にマップする。

LKM のページを userspace にマップできると構造体を共有できていろいろと便利。 このやり方はKVMで使われていて、それを参考にして簡略化したものを実装してみた。 百聞は一見に如かずということでデモのコード。

github.com

続きを読む

/proc/iomem で user 権限だとアドレスが 00000000 としか表示されない.

mmio のマップされているアドレスを確認しようとしたときに,手元の環境だと表示されたり表示されなかったりしたので,原因がわからず調べまわっていたら出てきた.

Linux Kernel 4.6以上だと privileged users でないとマップされているアドレスが表示されなくなったとのこと.

セキュリティ・キャンプ2016に行った

  • セキュリティ・キャンプ2016感想
    • 動機
    • 応募用紙
      • 10
      • 1
    • 事前課題
    • 専門講義
    • 専門講義以外
    • 生活
    • スポンサー向け画像
    • 終わりに

セキュリティ・キャンプ2016感想

行ったぞ。

続きを読む

katagaitai関東easy行った

午前中はTMCTFをやってたので記憶が…

revしたあとにどう解くかという話で、kleeとz3の話が聞けたのはとてもよかったです。

あと、SANSには行けず。

katagaitai #5 関東med

5周年おめでとうございます!次も行きます!

通信部分のコードはソルバを参考にしました。

続きを読む