CTFで初心者向けの問題を作ってみた話
はじめに
これは香川大学工学部サークルSLP(学生プログラミング研究所)のアドベントカレンダー
3日目の記事です。SLPのメンバとしては居ないことになっていはいますが、勝手に書いていきたいと思います。
病院の検査通いで余り体力が残っていないのでささっと書いてしまいます。
CTFってなんぞ?
CTF(Capture The Flag)についての説明です。SECCONの話をしようとしてる人もいるみたいなので手短に。。。
ここで取り上げるCTFは、コンピュータセキュリティの分野におけるものを指します。
Wikipediaで説明されているとおり、CTFは通常、参加者に対しコンピュータを守る経験や、現実の世界で発見されたサイバー攻撃への対処を学ぶ教育手法として企画されています。
このCTFには、競技の種類として、クイズ形式と攻防戦形式があります。
この記事では、クイズ形式のCTFの問題を作っていく内容の話をしていきます。
初心者向けのCTFについて
現在ある環境で、初めてCTFをやってみたいという人におすすめされるようなものとして、 ksnctf や CpawCTF が挙げられたりしますが、実際にやってみると、CTF初心者からは何から手をつけていいのやらわからないようなものとなっています。
そこで、コンピュータ初心者に対しては不向きであることから、自分たちで勝手に簡単なCTFを作ってみようという話が上がったので、簡単な問題を作って内輪でコソコソと作っています。
そもそも簡単な問題ってなんだ?
CTFには、以下のような問題の種類があります。
- Miscellaneous
コンピュータに関する雑学や数学パズルなどの問題
- Network
ネットワークのパケット解析など
- Web
Webアプリケーションの脆弱性に攻撃する問題
- Pwnable
プログラムの脆弱性に攻撃する問題
- Forensics
HDDやUSBメモリや物理メモリのイメージファイルを解析する問題
- Binary
プログラムの中に埋め込まれた回答を探す問題
それぞれに、問題の特色があって、個人の得手不得手で難易度は変わってきます。
先程紹介したCTF常設サイトでは、殆どの問題がMiscellaneous以外となっています。
コンピュータを余り触ったことのない人間にWebアプリケーションやプログラムの脆弱性を付けと言われて簡単に出来るでしょうか?出来ませんよね?出来てたまるか!
ということで、初心者向けの問題に適しているジャンルは、Miscellaneousということになります。特にこの手のジャンルの中でも、Triviaというジャンルになりますね。要は、コンピュータに関する知識を学んでもらおうというわけです。
問題の内容について
では、実際に作成した問題について一例を紹介していきます。
Web検索
その名の通りWeb検索での問題です。Webで個人のブログなどにフラグの文字を含んだページを用意しておきます。そのブログをWeb検索してフラグの文字を見つけてもらおうという問題です。
この問題では、Webブラウザの使い方について知ってもらおうという考えで作成しました。Webブラウザで検索するだけでなく、Ct+fの検索ようなWebブラウザにある機能の使い方も学んでもらえるようにする工夫をするとより良い問題になるかもしれません。
圧縮ファイル
これはよくある問題だと思います。zip形式に代表される圧縮ファイルを解凍して中身のファイルに答えが入っているという問題です。圧縮ファイルの種類を増やせばいろいろな圧縮形式があることを知ってもらえるため、コンピュータの拡張子の勉強にいいと思います。
パスワードに関する問題
簡単なパスワードのかかったものを用意して、問題文にそのファイルの仮想の持ち主の紹介をするようにしたものです。例えば、持ち主の誕生日について説明を書きます、この時のパスワードがその人の誕生日になっているという問題です。
パスワードの設定するときに推測されやすいので、そのようなパスワードの設定には気を付けましょうという警告をできる内容です。
まとめ
以上のような問題を多数作製して、同じチームの人と遊んでいました。
現在CTFのサイトの作製をしていってますので、また、作成できた頃に連絡できたらなって思ってます。サーバ管理がすごく面倒なことになっているので、しばらく先になりそうだけども。。。
CTFと聞いてSECCONの手助けになるような内容を期待していた人には申し訳ないと思いつつ、ここまでとさせていただきます。
ファイル投稿の方法が分かれば、あとで適当な問題1つ投げておきます。
Cocos2d-xを使ってゲームをつくりたい。
この記事はSLP-KBIT Advent Calendar 2016の4日目の記事になります。
突発的な思いつきだけで書いた記事です。
乱雑な文についてはあまり突っ込まないようにお願いします。
初めに
情報環境実験でJavaでのゲーム製作をしましたが、
個人的にJavaでのコーディングが好きになれなかったので、
別の方法を探していたときに見つけたフレームワークになります。
実際に作ろうとしていたゲームがよくわからないバグで動かなくなっているので、
そのことについてはまたえ別の機会に書きたいと思います。
なので、今回は紹介のみになります。すんません。
Cocos2dについて
Cocos2d-xのインストール
大体はCドライブの直下においている人が多いのではないかと思いますね。
環境変数の設定
編集画面が出たら、その中から新規を選択し、先程Cocos2d-xを展開したフォルダのパスを入力します。
環境変数の設定が出来たらあとはプロジェクトを作成して、起動するだけです。
わざわざ環境変数の設定方法を説明する必要はなかったんじゃないかと思われそうですね。
ただ単にWindows10になってから環境変数を設定する画面が見やすくなっていることを知ってもらいたかったってだけです。
今までの設定画面では、間違って他のパスを消してしまっていろいろと動かなくなった人はいるはずです。 いや、いてください。
いますよね....?
自分だけですか、アッハイ。
プロジェクトの作成
コマンドプロンプト上でプロジェクトを作成するフォルダへ移動し、
例としてはこんな感じです。
cocos new AAAA -p BBBB -l cpp -d ./
開いたら、ファイルの中身は何も変えずにビルドしてみましょう。
このような画面が出てくると思います。これがCocos2d-xの”Hello World”です。
ゲームを作るには、これを基準にして、これにいろんなオブジェクトを追加したり、
イベントを追加したりしていけば作ることが出来ます。
最後に
自らのソースコードを振り返る
これはSLP KBIT Advent Calendar 2014の11日目です。
※個人的な内容になってしまってます。
初めに
その場のノリと勢いに流され、先輩からの
という圧力()に屈した結果、このページを書いている。
いい機会だし、頑張ろうと思う。
今日までのアドベントカレンダーを見る限り、今の自分の知識で
こんな記事書けるわけ無いじゃないかと思った。
1年を振り返ろうとか言っていたが、今までの自分のCのソースを見ていこうと思う。
(ある意味この一年間その程度の事しか出来ていない)
大学の情報系に来るまでほとんどPCを触った経験がなかったので大目に見てもらいたいです…
1年のソースを振り返る
前置きが若干長くなったことと愚痴っぽくなったことは基本的にいつものことです、はい。
春先に初めて書いたCのファイルが残ってないかとディレクトリを漁った結果、
今年の4月に作ったフォルダからこんなものが出てきた。
誰もが通る道だと思います。
多分初めて書いたときのソースでしょう。
最初の方だし、特に何も言うことがないだろうと思ってたのに
さっそく突っ込みどころがありました。
なぜ出力が"Thanks"なのかと、"Hello, World"ではないのかと。
あと、タブ文字が空白で挿入されないというのは結構辛いと思った。
この量のソースだと、まだタブ幅が4文字の方が見やすい気がする。
次の月のものだと、
演算子の練習でしょう、多分。
タブ文字が空白になってる当たり、進歩したんでしょうか。
各月ごとに見ていこうと思ったけど、コレは長くなりそうなので
問題の有りそうなソースを上げていくことにする。
ひどい。
とにかく、ひどい。
ソースの量が少ないので何がしたいのかわかるが、何だ”整数c”って
入力したまま使ってないじゃないかと。
宣言するのも無駄な気がする。何だよ、このksコード。
次、
やけに長いコードが出てきたが、最早何をしているのかがわからない。
すごく無駄な計算をしている気がするが、どこを直していいのかがわからない。
コレを修正するぐらいなら、もう一度問題を見て初めから書いた方が早い気がする。
この長さのソースで修正するのがだるいと思ってしまうのだから、
システム開発の修正を後からするのは相当なものだと思う。
終わりに
自分のソースを見直すいい機会になった。
ソースを探している時、後半のソースはほとんど何やっているかがわからなくなっていたので、
仕様説明などは書くようにしておきたいと思った。
書いた本人ですらわからないコードはksコード以前の問題だと思う。
もし、来年もこの企画があるようなら、
技術的な記事が書けるようになっていたいとは思った。
今後はサーバについての知識を付けていきたい。
明日のアドベントカレンダーの担当なわけだが
今更ブログの開設してみた
"予定は未定"としていたが、今の知識量で語れるようなこともないので
(誰も期待してないと思うが)
この1年を振り返ろうかと思う。
最悪自分のゴミのようなCのソースを見て自分で叩くようなこともしようか…