トップページに戻る

Category

AllArchives

Checker

Credit

超初級CGIクラックガイド(9)

超初級CGIクラックガイド(1)で書いたんですが、CGIというモノには二つの特徴があります。
「CGIとJavaScriptって何が違うんだ」という問いに対するこの連載における答えは
  • CGIの内部処理は閲覧者から見えない出力しか見えない(JavaScriptの処理はhtmlに記述されますよね)
  • CGIは閲覧者がアクセスできないサーバー上のファイルにもアクセスできる
の二つということで。この二つって実は同じことです。「CGIはサーバーサイド、JavaScriptはクライアントサイド」という一言で説明できますが、まぁ分からなければ別にいいです。
「後者が何を意味するのか」というのは前回書きましたね。CGIを上手く利用してやれば、本来は閲覧者がアクセス不能なファイルを覗くことも可能かもしれない(超初級CGIクラックガイド(8)では書きませんでしたが、「覗くことも可能かもしれない」ということは即ち「書き込むことも可能かもしれない」ということです)。
今回は前者について。

僕はこれまで「ここにこんな(処理を行う)CGIがあったとします」と最初にCGIの内部処理を明かし、その上で「その処理を行うならばどのような穴が発生しうるか」を書いてきました。
しかし実際には、「あるサイトで動いているCGIがどのような処理を行っているのか」ということはそのサイトの管理者しか知らない情報です。KENT-WEBのYY-BOARDや2apesのapeboard等「配布CGI」ならば同じプログラムを入手することは可能ですけどね。オリジナルのCGIじゃお手上げです。

オリジナルのCGIの内部処理を推測し穴を予想する
ここが頭の使い所なんです。

一つだけ例を挙げておきます。
超初級CGIクラックガイド(7)の話を思い出して下さい。textareaから(改行コードを含んだ)データを送信しデータファイルのデータを狂わせる話です。
ここに、こんな一行掲示板があったとしましょう。
と僕は話を始めました。何故「掲示板」ではなく「一行掲示板」なのか分かりましたか?
「掲示板」の本来の書き込みformはこんな感じでしょう。
名前<input type="text" name="myname">
本文<textarea name="content"></textarea>
そして「一行掲示板」の本来の書き込みformはこんな感じでしょう。
名前<input type="text" name="myname">
本文<input type="text" name="content">
当然、CGIが「書き込み内容内に改行コードがあったら弾く(もしくはデータファイル書き込み時に<br>等に置換する)」という処理を取っていればダメですが。
この世に存在するほぼ全てのクラックは「裏技」です。「裏技」とは「プログラムサイドの処理の穴を予想/利用し本来想定されていない動作を行わせる」ということです(「コナミコマンドで無敵に」とかはここでは「裏技」と言わないことにします、あれは「裏技」というより「イースターエッグ」「隠し要素」だ)。
書き込み内容内に改行コードがあったら、データファイル書き込み時に<br>等に置換する
これは、本来的に改行コードが送信される可能性のある複数行入力可能な掲示板では「必須の処理」です。そして本来的には改行コードが送信されることのない一行掲示板では「悪意ある利用者の存在を仮定した時に必要になる処理」です。
これが
ここに、こんな一行掲示板があったとしましょう。
と話を始めた理由です。
次に僕は
データファイルでは「名前,内容,IPアドレス」を一行に。書き込みがある度どんどん下に追記。
と掲示板の処理を明記しました。これは「実際配布されている各種掲示板CGIスクリプトのソースを読んだ経験上」です。そのような処理を行っている掲示板が多いですし、実際自分でスクリプトを書こうとするとコレが様々な面で効率の良い方法であることが分かります。よって「(処理が見えない)目の前にある掲示板もこのようにデータを保存しているのではないか」という推測が可能になる。

超初級CGIクラックガイド(7)の掲示板の話はこのようにして書かれています。これを「例」として、今回の連載を終えようと思います。
※参考:会員制サイトにおけるパスワード
「サーバー上で動作しているCGIの内部処理を予測する」という話の例として
「クラック」というモノは「映画の主人公がやっているよく分からない超能力」や「ツールを落として起動してボタン押すとできること」ではない。
この世で一番分かりやすいクラックはCGIクラックだと思います。
と最初に書きました。その意味が少しでも伝われば嬉しいです。

SeeAlso

SameSubCategory

Footprint

Navigation

TrackBack

この記事へのトラックバック

Comment

PostForm

情報を登録  
コメントは本文以外省略可能で、当方の承認後掲載されます