5. CTFとは
´Capture The Flag
l 情報技術を絡めた旗取り合戦
l 幅広い分野から出題される
l セキュリティと絡めやすい競技
´個⼈的にCTFとセキュリティは別物だと思ってる
´世界全国で開催されている
l ⽇本だとSECCON CTF、Trend Micro CTF
l 初⼼者向けのSECCON Beginners(ctf4b)
4
6. CTFのジャンル
´ジャンルは様々
l Web
l http使えば全てweb
l Forensic
l ⼀番現実のセキュリティ業務で役に⽴ちそう
l Reversing
l 総合格闘技
l Crypto
l 頭の良い⼈しか出来ない
l Pwnable (Exploit)
l 今⽇のお題
l Misc
l なんでもアリ
5
12. 1. 表層解析
´fileコマンド
l 基本的な情報はこれで取れる
´例の場合だと
l 32bit ELF
l アーキテクチャはx86
l dynamic linkでライブラリを使⽤している
l strippedなのでシンボル情報がない
% file ./my_sandbox
./my_sandbox: ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV),
dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24,
BuildID[sha1]=44ab05f5782a9a5dbae69dd6acea3741c79f7b01,
stripped
11
13. 1. 表層解析
´checksecコマンド
l セキュリティ機構を確認できる
´例の場合だと
l Full RELROなのでGOTの上書きはできない
l canaryは存在しないのでstack BOFが有効
l Nxbitがないのでシェルコードの実⾏が狙える
l PIEはないので、命令とデータは固定アドレス
% checksec ./my_sandbox
[*] '/home/hama/ctf/EDCTF/MySandbox/my_sandbox'
Arch: i386-32-little
RELRO: Full RELRO
Stack: No canary found
NX: NX disabled
PIE: No PIE
12
43. Address Space Layout
Randomization
´アドレス空間配置のランダム化
l ライブラリやheap、stackが配置されるアドレ
スをバイナリの起動ごとにランダムにする
l アドレスが分からないとエクスプロイトの実⾏
が困難になる
´リークできれば問題はない
l GOTには解決されたライブラリ関数のアドレス
がある -> リークしたアドレスから関数のオフ
セットを引けばlibcのベースアドレス
l 最悪ブルートフォースで当てる
42