Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP初心者、がんばる。

1,000 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

PHP初心者、がんばる。

  1. 1. by @Schwarz_Sardine TDU FEN LT#3 1
  2. 2. • 黒イワシ(@Schwarz_Sardine) • I科3年 • CG頑張りたい人 • 技術などない • どういうわけかCTFをはじめた CTF(capture the flag):セキュリティを中心とした情報技術に関する 技術力や知識を問題形式で競う TDU FEN LT#3 2
  3. 3. • 「mlabCTF Linux Challenge」 の裏で誕生したスコアサーバ(のPHP部分) を頑張って作った TDU FEN LT#3 3
  4. 4. TDU FEN LT#3 4 つらい
  5. 5. TDU FEN LT#3 5 企画:9月4日 → 開催日:9月10日 俺 「時間 足りない スコアサーバ どうする」
  6. 6. TDU FEN LT#3 6 企画:9月4日 → 開催日:9月10日 俺 「時間 足りない スコアサーバ どうする」 ??? 「PHPは寝ながらでも書ける」
  7. 7. • フレームワーク? • テンプレートエンジン? ⇒PHP歴3日目なので右も左も分からない ⇒ 勉強してる暇ないからとりあえず生で TDU FEN LT#3 7
  8. 8. • データベースはSQLite – 導入が簡単 – ファイル1つでDBを管理できる – PDO(汎用データベース接続クラス)が使えるので PHPからの操作が楽 • ページの見た目はBootstrap – 導入が簡単 – 流行りのレスポンシブデザイン – ドキュメントが豊富 TDU FEN LT#3 8
  9. 9. • First Commit TDU FEN LT#3 9
  10. 10. • 最低限必要な機能 – ユーザ登録/ログイン/ログアウト – 問題の表示 – 問題への解答 – ランキング表示 – 問題の追加 TDU FEN LT#3 10
  11. 11. • 制作は当日開催中も続き、 リアルタイムに更新が行われた (問題登録できるようになったのは競技開始1時間後…) TDU FEN LT#3 11 "Barcelona Temple Expiatori de la Sagrada Familia" by Wolfgang Staudt at http://www.flickr.com/wolfgangstaudt/2050445207/ under a Creative Commons Attribution 2.0. Full terms at http://creativecommons.org/licenses/by/2.0.
  12. 12. TDU FEN LT#3 12
  13. 13. TDU FEN LT#3 13
  14. 14. TDU FEN LT#3 14
  15. 15. • 重大な脆弱性につながるミスが 次々に発見される – いくつかは前日までに修正された – とんでもない脆弱サイトを作るところだった TDU FEN LT#3 15
  16. 16. TDU FEN LT#3 16 • ログイン処理(再現/抜粋) …おわかりいただけただろうか
  17. 17. • $dbpath=“./db.sqlite3” – httpで参照できる所にDBが置いてある – DBがごっそりダウンロードされる危険性 TDU FEN LT#3 17
  18. 18. • $password=sha1($username.$password); – DBに保存するパスワードをハッシュ化 – しかし、ユーザ名をソルトにしているため 短すぎる可能性がある ⇒レインボーテーブルによる攻撃に弱い TDU FEN LT#3 18 レインボーテーブル: 様々な文字列のハッシュをあらかじめ計算しておいたテーブル
  19. 19. • SELECT * FROM user WHERE name=‘$username’ AND pass=‘$password’; – 変数をそのままSQL文に埋め込んでいる – SQLインジェクションの危険性 TDU FEN LT#3 19
  20. 20. • ①DBは手の届かないところへ – パーミッションを適切にする • ②ソルトは十分長い一意な値にする – 見かけ上十分な長さのパスワードに • ③Prepared Statementを使用する – SQL文を改ざんされないように TDU FEN LT#3 20
  21. 21. • 確かにPHPは動くものがすぐ書けた • セキュリティについてよく考える (フレームワーク等使わなかったので特に) • 今でも開発は続いているが、秘伝のソース化 してきた • 計画性は大事 TDU FEN LT#3 21
  22. 22. • 【学内者初心者向けCTF】TDU CTF 2014/12/25(木) 13:00 〜 19:00 @情報メディア学科 演習室(1号館 4階) TDU FEN LT#3 22
  23. 23. TDU FEN LT#3 23 1.タイトル 2.自己紹介 3.内容 4.結論 5.はじまり 7.計画 8.とにかく開発を早くするために 9.制作開始 12.完成したもの 15.が 16.問題の個所 20.改善 21.まとめ 22.PR

×