狠狠撸

狠狠撸Share a Scribd company logo
1
自己&LT紹介
? 八木 鶫 or かたわれ
? Twitter: @_ktwr
? 前回のLT:
~SHA1衝突でピンチ~
/kataware/ltsha1
? 今回のLT
~学内CTFのお話~
2
CTFってなーに
? Capture the Flag
? 問題に隠されたFlagを見つける
(sbtさんが話してくれるはずなので割愛)
? 学内CTF
? 「セキュリティ特論」の講義の課題用に作成した
? セキュリティを初めて触る人用に問題を作ってみた
? セキュリティ特論の講義
? Buffer over flow
? SQLi
? OSコマンドインジェクション
? XSS
3
サーバの構成
? サーバ構成:3台
? スコアサーバ、Web問サーバ、Pwnable問サーバ
? スコアサーバー
? AWS-Ubuntu 16.04 LT 64bit
? Nginx+PHP
? 問題鯖
? Pwnable鯖
? Ubuntu 14.04 LT 32bit
? 64bitのOSで32bitコンパイルできるの忘れてた
? Xinetd+chrootで問題環境作成
? Web鯖
? RaspberryPi 3.0 Raspbian 8.0
? Apache2+Mysql+PHP
4
問題数と問題難易度
? 問題数?講義数に比例して作成
? Pwnable:4問
? 1問目:簡単なBOF(20文字送り込むとFlagが出る)
? 2問目:shell codeを送り込む
? 3問目:関数のアドレス書き換え
? 4問目:BOFを利用してshellを取る?初心者には難易度高め?
? Web:1問
? SQLi
? 超初心者向け
? 大学講義でやったレベルで解ける難易度
? SECCON Beginnersレベル
? ももいろテクノロジーみればpwnableは全部解ける
5
結果
? 回答者数がめっちゃ少ない(6名)
? Pwnのアクセス数は315件(アクセスはほぼ1問目)
? 全完は1名
? Web問はPwnableよりも取り組みが良かった
? 結論
? Pwnableは講義でやってても難しい
? 受講生が他の課題等で忙しかった等の意見もある
? 初心者にはWeb系をおすすめしましょう
? 感想
? サーバ立ち上げるのはセキュリティ的にめっちゃ気を遣う
? ただしとても勉強になる
6
小さいCTF開催したい人へのおすすめ
? Pwnableはxinetd+chroot環境は結構いい
? xinetd:netcatコマンドでアクセスできる環境を作る
? chroot:rootディレクトリを変えるのでshellを取られても
安心
? 必要なのはxinetdの設定ファイルと問題で使う環境の用意
7
service pwn1
{
type = UNLISTED
protocol = tcp
socket_type = stream
port = 12345
wait = no
server /usr/sbin/chrrot
server_args /home/tsugumiyagi/Documents/pwn/pwn1 ./pwn1
user = root
}
使用するポート
使用するコマンド
chroot chrootに渡す引数chrootを実行する
ユーザ
chroot環境を作る
? chroot:rootディレクトリを変更する
? chrootした際にプログラムが動くようにライブラリ
環境を構築する
? /bin/bashとpwn1で
使用するライブラリをコピー
8
$ ldd pwn1
linux-gate.so.1 => (0xb779d000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75d50000)
/lib/ld-linux.so.2 (0xb779e000)
必要なライブラリ
$ tree .
├── pwn1
├── bin
│ └── bash
├── flag.txt
├── lib
│ ├── i386-linux-gnu
│ │ ├── libc.so.6
│ │ ├── libdl.so.2
│ │ └── libtinfo.so.5
│ └── ld-linux.so.2
└── pwn1.c
注意点
? プログラム作成時に注意する
? 今までのchroot環境だとプログラム終了時に出力が
表示される
? 対話型にしたいのでmainが始まったときに
setbuf関数をはさむ
9
$ cat pwn1.c
……中略……
int main(int argc, char *argv[]){
setbuf(stdin,NULL);
setbuf(stdout,NULL);
FILE *fp;
char str[1000];
char readline[256] = {'0'};
char no[] = "no";
……以下略……
この2行がすごく重要
今後の予定
? 教授曰く
「来年は講義直後に演習の形式で利用したい」
? 来年の様子をLTか何かで紹介しよう
私は卒業なので後輩がやってくれることに期待
? ?後輩にお願いしときました
10

More Related Content

名古屋セキュリティ勉强会LT~学内CTFの话~