超初級CGIクラックガイド(7)
form内にはtextやselect以外にtextareaをおくこともできます。textareaは複数行入力ができるので、つまり改行をCGIに送信することができます。
ここに、こんな一行掲示板があったとしましょう。
データファイルでは「名前,内容,IPアドレス」を一行に。書き込みがある度どんどん下に追記。こんな感じ。
さて。 もしここで、本来はtext欄から送られる(つまり改行がない)「書き込み内容」を僕がtextarea欄から
こんな風に送信したらデータファイルはどうなりますか?
超初級CGIクラックガイド(6)と今回で書いた話は結果を見れば「遊び」と「自爆(わざわざ自分のIPを晒している)」の二例ですが、「CGI相手のイタズラを発想する例(そしてCGIを自作するならば何に気を付けるべきなのかという例)」だと考えて頂ければ。
ここに、こんな一行掲示板があったとしましょう。
書き込み時
text欄から「名前」と「書き込み内容」を取得し環境変数から「書き込み人のIP」を取得しデータファイルに書き込む。データファイルでは「名前,内容,IPアドレス」を一行に。書き込みがある度どんどん下に追記。こんな感じ。
taro,こんにちはー。今日いい天気ですねー,12.34.56.78
hanako,こっちは雨だボケ,23.45.67.89
hanako,こっちは雨だボケ,23.45.67.89
ログ表示時
データファイルから一行ずつデータを取り出しそれを「,」で区切って「名前,内容,IPアドレス」にして「名前」と「内容」を「名前 > 内容」の形式で表示する。で古い順に表示。こんな感じ。
taro > こんにちはー。今日いい天気ですねー
hanako > こっちは雨だボケ
IPアドレスは管理者しか見れないようになってる訳ですね。hanako > こっちは雨だボケ
さて。 もしここで、本来はtext欄から送られる(つまり改行がない)「書き込み内容」を僕がtextarea欄から
taro,こんにちはー。今日いい天気ですねー,12.34.56.78
hanako,こっちは雨だボケ,23.45.67.89
tokix,僕は雨が好きです
飴はもっと好きです,34.56.78.90
当然こうなりますね。するとログ表示時、行ごとに書き込みを区切り「,」でデータを区切るCGIは書き込みをこのように判断します。hanako,こっちは雨だボケ,23.45.67.89
tokix,僕は雨が好きです
飴はもっと好きです,34.56.78.90
- 「taro」が「こんにちはー。今日いい天気ですねー」と書き込み(IPアドレスは「12.34.56.78」)
- 「hanako」が「こっちは雨だボケ」と書き込み(IPアドレスは「23.45.67.89」)
- 「tokix」が「僕は雨が好きです」と書き込み(IPアドレスは「」)
- 「飴はもっと好きです」が「34.56.78.90」と書き込んだ(IPアドレスは「」)
taro > こんにちはー。今日いい天気ですねー
hanako > こっちは雨だボケ
tokix > 僕は雨が好きです
飴はもっと好きです > 34.56.78.90
CGIが「書き込み内容内に改行コードがあったら弾く(もしくはデータファイル書き込み時に<br>等に置換する)」という処理を取っていればダメですが。hanako > こっちは雨だボケ
tokix > 僕は雨が好きです
飴はもっと好きです > 34.56.78.90
超初級CGIクラックガイド(6)と今回で書いた話は結果を見れば「遊び」と「自爆(わざわざ自分のIPを晒している)」の二例ですが、「CGI相手のイタズラを発想する例(そしてCGIを自作するならば何に気を付けるべきなのかという例)」だと考えて頂ければ。

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