皆さんこんにちは。
なつまるです。

突然ですが、めちゃくちゃ夏ですね。

夏といえば、サマーウォーズですよね。
毎年金曜ロードショーで放送されると「ああ、夏だなあ、、」と思います。

そして、ハッキングかっこええ・・・と思います。

今回は!
7月に放送されたサマーウォーズに感化されて
ハッキングの世界を体験してみました!

ちょっと古くない?と思った方。
私は録画派なので最近見たんです。なので旬な記事です。

 

 

まだ何か文句ありますか?

 

 

Hackmeって?

皆さんは、Hackmeというサイトをご存じですか?
ちなみにHackmeを日本語訳すると、「私をハックして…」です。セクシーですね(?)

このサイトは、セキュリティや虚弱性について学ぶ延長で
実際に開発者自信が攻撃をしてみて、様々な攻撃パターンと防御対策を
実践的に学ぼう!という目的のサイトです。

簡単に言うと
「とにかくやってみたらええんちゃう~~????」
って感じで
「なんかよう分からんけど、とにかく楽しそう~~~★★★」
と思った方はぜひ!って感じ!

※ハッキングの技術を得るためでなく、ハッキングを通してセキュリティを学ぶためのサイトです。
※実際に存在するサイトやシステムをハッキングすることは犯罪です。絶対にやめましょう。

 

以下、ネタバレ書いています。
画像とかめっちゃ張り付けてるので先に解きたい方は
下記からどうぞ。

http://hackme.netfire.jp/

 

レベル1

実際に解いてみます。
ドキドキするしてきた、、、!

ログイン画面です。
この画面を突破しろということですね。
(初めのニックネーム入力部分はカットしています)

 

とりあえずログインボタン押してみてもいいのですが、
ヒントを求めてページのソースを表示します。

 

 

まずは、右クリックして…

 

あ、怒られた(笑)

じゃあショートカットで。
WindowsPCでブラウザにChromeをお使いの人は、Ctrl + Uで見れます。

 

 

 

フム…フムフム…

 

 

ほう..

 

 

 

 

…ん!?(黄色部分)

Oh…
これはアカン…

 

アカンで工藤…

 

まさかの、コメントアウトでそのまんま書いてました。

開発環境とかであり得るかもしれないということでしょうか?
たしかに削除するの忘れて本番リリースしたり、開発環境がどっかから漏れたときに・・・ひい!恐ろしすぎる!

そのまま入力して突破ボタンクリック。

 

 

 

いけました。

そして、挑戦的なメッセージが。(笑)
まだまだ序盤ということですね。

 

レベル2

どんどん行ってみよう~

 

ほう。またログイン画面。
(もしかして、Lv1と一緒のパターンか?)

とりあえず、ソース見てみます。
さっきの感じだと、formタグ付近でしょう。
ということで、一気に300行目までいきます。

 

 

ん?あれ、ない。

 

 

 

 

やべ、、詰んだかも。

 

 

 

 

 

 

 

 

 

 

 

 

終わった、、

 

 

 

 

 

 

 

 

 

 

 

 

あ、いや、待てよ、SQLインジェクションの可能性がまだ、、、
(そうであってくれ、、、)

 

SQLインジェクションとは?

SQLインジェクションとは、アプリケーションのセキュリティ上の不備を意図的に利用し、
アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。
また、その攻撃を可能とする脆弱性のことである。

ウィキペディアより

なんのこっちゃ?って人。
もし職業がIT関係であれば、ぜひ読んでください

 

SQLインジェクションかどうかの確認方法は【’(半角シングルクォーテーション)】を入力するだけ。
エスケープされてなければ、SQLエラーが出ます。

IDとPWD両方上記を入力し、後は願うだけ。
(まじ頼む、、、ブログのネタが終わる、、、!!)

 

あ~~よかった~~

良くないけどよかった~~

 

 

ログイン認証の時の基本SQLは大体
【SELECT * FROM LOGIN_TB WHERE ID = ‘ID入力値’ AND PASS = ‘PASS入力値’】
です。(これにパスワードのハッシュとかが入るので正確には違いますが)

今回の場合は、IDとパスワード入力部分でDBの情報を不正に操作することを求められています。

ここまで来れたら、もう勝利も同然。
【’ OR 1=1 –(半角ハイフン×2) 】を入力すればOKです。最後の半角スペース忘れないでね。

 

軽く解説すると、入力値はWHERE句なのは分かってるので、条件を【’】で強制終了させ、【OR 1=1】ですべてSELECTしてこい!と言ってます。
後半の【–(半角ハイフン×2) 】で、以降のSQLをコメントアウトにしてます。

 

分かりやすく例えると、
せっかくカレーライスを作って彼氏に出したのに、
俺はオムライスが食べたいんや!
と言って、勝手に卵で包んでケチャップで落書きされた
って感じですかね。(全然違う)

そして、そんな男とは別れましょう最低

 

 

…さて、【’ OR 1=1 –(半角ハイフン×2) 】をIDとパスワード両方に入力していざ!

おっ、いけましたね~

これの何がやばいかというと
このサイトは表示されてないですが、すべての登録ユーザーの情報が出力される(可能性が高い)ことです。
ログインID、パスワード、もしかしたら名前や生年月日、性別、住所など、、、
THE★個人情報ですね。

 

対策方法は簡単。
エスケープすればOK◎
あとは、やっぱりパスワードは暗号化しようね。

・・・というか、ログイン部分は自作するよりも、ライブラリとかフレームワーク使いましょう

 

 

まとめ

今回ハックチャレンジをやってみて
実際こんなサイトがあったらやべえ・・・
が私の感想です。

開発者の方。

いやいや、こんなバグ埋め込まねえよ
と思いましたか?それとも

やっべ・・・
でしたか?(それ以上は怖くて聞きません。笑)

そして、開発者以外の方。
こんなサイトが実際に、もしかしたら、ひょっとすると、思いがけず、ともするとあるかもしれません。

その場合、ちょっとITかじってるレベルの人は
めちゃくちゃ簡単にハッキングできるというのを分かっていただけましたか?

パスワードを使いまわしていると、、、言わずもがなですね。

そのサイト関係者が悪いのは大前提ですが、漏洩して泣くのはあなた(会員)です。
パスワードの使いまわしは、(私も含めて)絶対にやめましょう

 

 

 

 

最後に、、、
サマーウォーズやっぱ最高!!!

以上です。
見てくれてありがとうございました。

さようなら。

まとめ

SHARE

なつまる
TEXT BY なつまる

RECOMMENDED POSTこの記事もおすすめ!