42
tkbctf3 miocatができるまで あるいは.NET FrameworkがWindows向けであることを(今更)確信するに至るまで Mei Akizuru (@maytheplic)

coinsLT#0 tkbctf3 miocatができるまで

Embed Size (px)

DESCRIPTION

coinsLT#0で発表したもの。tkbctf3においてWeb250として出題された"miocat"に関する発表。 .NET Frameworkでの文字列比較におけるロケールの扱いの仕様を題材にしたものだったが、実装の甘さや.NET/Monoの挙動の違いにより非常に簡単な問題になってしまった。その原因などを紹介する。

Citation preview

Page 1: coinsLT#0 tkbctf3 miocatができるまで

tkbctf3miocatができるまで

あるいはNET FrameworkがWindows向けであることを(今更)確信するに至るまで

Mei Akizuru (maytheplic)

自己紹介

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

自己紹介

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

ここになにかあった

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

bull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

darr小傘です

ここに小傘ちゃんがいた

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 2: coinsLT#0 tkbctf3 miocatができるまで

自己紹介

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

自己紹介

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

ここになにかあった

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

bull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

darr小傘です

ここに小傘ちゃんがいた

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 3: coinsLT#0 tkbctf3 miocatができるまで

自己紹介

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

ここになにかあった

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

bull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

darr小傘です

ここに小傘ちゃんがいた

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 4: coinsLT#0 tkbctf3 miocatができるまで

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

ここになにかあった

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

bull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

darr小傘です

ここに小傘ちゃんがいた

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 5: coinsLT#0 tkbctf3 miocatができるまで

darr家族ですbull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

bull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

darr小傘です

ここに小傘ちゃんがいた

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 6: coinsLT#0 tkbctf3 miocatができるまで

bull 秋弦めい (Mei Akizuru)

bull maytheplic autchord

bull coins11AC

bull RubyとかCとか触ります

bull 最近Fとかやりたい機運

bull 自然言語処理(したい)マン

bull 小傘ちゃんかわいい

darr小傘です

ここに小傘ちゃんがいた

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 7: coinsLT#0 tkbctf3 miocatができるまで

そもそもCTFってなに

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 8: coinsLT#0 tkbctf3 miocatができるまで

そもそもCTFってなに

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 9: coinsLT#0 tkbctf3 miocatができるまで

弟です 嘘です

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 10: coinsLT#0 tkbctf3 miocatができるまで

CTF Capture The Flag

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 11: coinsLT#0 tkbctf3 miocatができるまで

CTF Capture The Flag

bull コンピュータセキュリティに関する技術を競う

bull バイナリと(解析的な意味で)お友達になったりパケットと(解析的な意味で)お友達になったりSQLと(インジェクション的な意味で)お友達になれます(あくまで一例です)

bull 攻撃の手法を知ることで防御の仕方を学ぶ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 12: coinsLT#0 tkbctf3 miocatができるまで

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 13: coinsLT#0 tkbctf3 miocatができるまで

ldquomiocatrdquoの概略

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 14: coinsLT#0 tkbctf3 miocatができるまで

miocatbull 「みおきゃっと」と読みます

bull        のWeb 250点問題

bull 某筑波大生が生み出した伝説の授業支援アプリケーションにちなんで命名

bull けいおんキャラの中では澪ちゃんがいいです黒髪ロングは正義だよいいね

ちなみに元ネタgithubで公開されててビビった

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 15: coinsLT#0 tkbctf3 miocatができるまで

どんな問題 (1)bull 指示されたURLを見に行くと謎のフォームがある

bull 謎のフォームにURLを入れると そのURLの内容を取得して表示する

bull localeというパラメータを受け付ける

bull localeを指定するとそのlocaleの元で指定されたURLの内容を取得

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 16: coinsLT#0 tkbctf3 miocatができるまで

どんな問題 (2)bull フォームにrdquofilehogehelliprdquoとか入れても弾かれる

bull 内部でrdquoFILErdquoで始まるかチェックしているこのチェックがロケール依存

bull ldquolocale=tr-TRrdquoとしてrdquofileldquoとするとアクセスが通る()

bull あとはetcpasswdとか読んでください

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 17: coinsLT#0 tkbctf3 miocatができるまで

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 18: coinsLT#0 tkbctf3 miocatができるまで

ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 19: coinsLT#0 tkbctf3 miocatができるまで

スコアサーバーを眺めて私は思った

なんか解かれるのさすがに早すぎない

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 20: coinsLT#0 tkbctf3 miocatができるまで

リクエストの内容を見て私は思った

なんか意図と異なる方法で解かれている気がする

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 21: coinsLT#0 tkbctf3 miocatができるまで

まぁ今から問題変えるわけにもいかないしhelliphellip

そして放置された

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 22: coinsLT#0 tkbctf3 miocatができるまで

実際に何が起こったか

ここから先はtkbctf3が終わった後の話

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 23: coinsLT#0 tkbctf3 miocatができるまで

tkbctf3 Write-up - kusano_kの日記

httpdhatenanejpkusano_k201405051399302285

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 24: coinsLT#0 tkbctf3 miocatができるまで

ただのディレクトリトラバーサルに

なってる

これで250点はあまりにもボーナス問題であるhelliphellip

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 25: coinsLT#0 tkbctf3 miocatができるまで

原因bull 受け取ったアドレスをそのままWebClientDownloadStringに渡していた (これは半ば意図的ではある)

bull DownloadStringが`httphellip`という形式のURLを受け付けてそれを`filehttphellip`と見なしてしまう

bull そしてそのローカルファイルを返してしまう

bull 本番ではmiocatをMonoランタイムで動かしていた

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 26: coinsLT#0 tkbctf3 miocatができるまで

犯人はGetFullPath

bull PathGetFullPath(String)は名前の通りのメソッド

bull DownloadStringが呼び出す

bull URLとしての解析に失敗した場合に呼ぶ

bull `httphoge`は不正なURL

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 27: coinsLT#0 tkbctf3 miocatができるまで

犯人はGetFullPath

bull GetFullPathにrdquohttpmofnyardquoを渡すとhelliphellip

bull NETでは失敗する(URI formats are not supported)

bull Monoでは成功する()

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 28: coinsLT#0 tkbctf3 miocatができるまで

Mono vs NETbull NET FrameworkとMonoで挙動が違っていた

bull NET Frameworkは`httpetcpasswd`を ファイルパスとして見なさない(URI形式として認識して例外を投げる)

bull Monoは`httpetcpasswd`を妥当なファイルパスとして見なす

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 29: coinsLT#0 tkbctf3 miocatができるまで

結果helliphellipbull `httpetcpasswd`は`filehttpetcpasswd`になり

bull カレントディレクトリを基準にフルパスになり

bull homemiocathttpetcpasswd

bull homeetcpasswd

bull ``の数によっては無事`etcpasswd`に辿り着いてしまうのでした

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 30: coinsLT#0 tkbctf3 miocatができるまで

そんなわけで

NET Frameworkと挙動が違うじゃんかよーhelliphellipと私はバグレポートを投げたのでした

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 31: coinsLT#0 tkbctf3 miocatができるまで

バグレポートBug 19603 ‒ PathGetFullPath returns the full path for URI

httpsbugzillaxamarincomshow_bugcgiid=19603

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 32: coinsLT#0 tkbctf3 miocatができるまで

返事が来たあと状態がRESOLVED INVALIDになってた

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 33: coinsLT#0 tkbctf3 miocatができるまで

返事を簡単に訳してみた

ldquohttptestcomrdquoはUnixでは正しいファイル名だからだ

これはNETとかいうUnixのことをあまり考えてないブツを使ってることから来る問題だだからその問題(ディレクトリトラバーサルが起こるかもしれない等)には自分のコードで対処する必要がある

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 34: coinsLT#0 tkbctf3 miocatができるまで

うーんhelliphellip

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 35: coinsLT#0 tkbctf3 miocatができるまで

ぐうの音も出ねえ

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 36: coinsLT#0 tkbctf3 miocatができるまで

まとめ

bull 自己紹介

bull そもそもCTFってなに

bull ldquomiocatrdquoの概略

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 37: coinsLT#0 tkbctf3 miocatができるまで

まとめ

bull 自己紹介

bull そもそもCTF

bull ldquomiocatrdquo

bull ldquomiocatrdquoでは何が起きたのかそしてどうなったのか

bull まとめ

もくじ

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 38: coinsLT#0 tkbctf3 miocatができるまで

NETとMonoの差異

bull 特にディレクトリ操作パス操作はWindowsとUnixでだいぶ異なるので気を付ける

bull Mono on Windowsでも挙動はMono

bull 「WindowsとUnix」ではないので注意

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 39: coinsLT#0 tkbctf3 miocatができるまで

Webアプリとして

bull ユーザーの入力をそのまま受け付けるな

bull 当たり前だけど忘れがちですね

bull 時にWAFが上手くやってくれたりするけど

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 40: coinsLT#0 tkbctf3 miocatができるまで

CTF(の運営)的に

bull 問題のレビューはちゃんとやれ

bull 時間を取ってやれ

bull 問題の完成が問題公開直前なのは論外だ

本当にすいませんでしたhelliphellip

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 41: coinsLT#0 tkbctf3 miocatができるまで

˙˙最後に˙˙

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた

Page 42: coinsLT#0 tkbctf3 miocatができるまで

ルールとマナーを守って 楽しくデュエルCTFしよう

ここに遊戯がいた