トップ «前の日記(2004-05-16) 最新 次の日記(2004-05-19)» 編集

"週"記

日記?ムリっ。
半年1回の更新を目指すよう心がけます。
RSS

WebAppSec

2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|07|08|09|12|
2008|01|02|
2009|04|
2010|02|

履歴


2004-05-18

_ [ダーツ] ダーツ

ここ1週間してないことが判明。最近忙しいのかなぁ?

あ、水曜日にやってたや。やっぱ忙しくないみたいです。

_ [webapp] perl のopen()

悩み中。

perl の open() の使用方法の一つとして、

open(IN, "/bin/cat hoge.txt |");
while (<IN>) {
    print;
}

とすると、「/bin/cat hoge.txt」 を実行した結果を読み込んで出力してくれます。

さてここで、上と似た次のようなプログラムがあったとします。

open(IN, "/some/path/$filename.txt");
while (<IN>) {
    print;
}

$filename は変数で、任意の文字列を指定することができます。
この条件で、$filename の部分を適切に指定することで任意のOSコマンドを実行できないかと考えているんですが、どうも上手くいきません。
良い案(もしくは「考えるだけ時間のムダです」ってコメント)募集中 ^^;

本日のツッコミ(全13件) [ツッコミを入れる]
_ みゃー (2004-05-18 11:17)

ハヤク!!しないと禁断症状がでちゃうYO!(゜д゜ドウシタドウシタ!

_ やまにょん (2004-05-18 12:42)

ゲーセンのクレーンゲームでダーツ取っちゃった。元手600円。<br>どーしよー? (笑

_ bun (2004-05-18 13:31)

練習しといてください(笑)

_ ちせ (2004-05-18 17:08)

ダーツやったコトないよー。面白いのかなー。でもきっと、試したトコロで下手なんだろうなぁ・・・(しょぼーん)。

_ やまにょん (2004-05-18 18:35)

そのゲーセン、ダーツ場もあるんだよなぁ・・・。やっぱし、やるしかですか? (ぇ<br>とりあえず徹夜でダーツできるくらい面白いらしいです。w<ちせさん

_ TAMA (2004-05-18 19:13)

/some/path/$filename.txtの中に実行したいコマンドが記述されている、ということでしたらprintのかわりにsystem()でできちゃいますが、他の方法を模索されているのでしょうか・・・

_ bun (2004-05-18 19:26)

$filename=../../bin/cat /etc/passwd |<br>みたいにして、catコマンドを実行するとかしたいんですけど、後ろについてる「.txt」が邪魔でうまくいかないんです。

_ TAMA (2004-05-18 22:47)

open()はファイル名先頭の<,>,>,>,+<,+>,+>>,|と末尾の|以外の文字は、制御文字も含めて単なる文字列として扱うようですね。$filenameの記述内容により「.txt」を無効化することはできないのではないでしょうか。「時間のムダです」に1票です。(^^;

_ ななし (2004-05-19 09:12)

");#.txt" );とかじゃダメでそか?

_ bun (2004-05-19 11:21)

TAMAさんありがとうございます。やっぱりできませんか。<br>ちなみに「../../bin/cat /etc/passwd |」 の後ろに0x00〜0xff まで突っ込んでみたんですけど、どれもダメでした。

_ TAMA (2004-05-19 11:56)

私もそんな事をやってみて、open()は先頭と末尾以外にどんな文字コードがあっても全てファイル名として評価する事を知りました。

_ TAMA (2004-05-19 12:05)

「"」や「#」は、open()中に直接記載した場合には有効ですが、$filename中に入れた場合は単なる文字として扱われ、末尾の.txtまでが1つのファイル名として動作しようとするのです>ななしさん

_ sanaki (2004-08-20 15:07)

%00 でいけるはずだけど、(当然 CGI(Perl) 側で URLデコードされているという仮定....

お名前:
E-mail:
コメント:

投稿する前にチェックボックスをチェックしてください


無料アクセス解析