読者です 読者をやめる 読者になる 読者になる

tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン開発を承ります。ご連絡はこちらのホームページからお願いいたします。

XSS Quizの#11を解いてみた

XSS Quizの#11.
a threadless kite - 糸の切れた凧(2008-02-06)
これ、私です。yamagataさん、ありがとう。

でも、この答えを見ても実はすぐに分からなかったのです。

3. NULL をはさんでみる。「%3Csc%00ript%3E」 ⇒「

自分は、I.Eのみで有効である

<scrip
t>alert();</scri
pt>

系に固執してたんですね。で、「んー、どうやって制御文字のLFをPOSTで送るんだー!?」と3時間ほど悩みまくり。ローカルにHTML保存して色々やりたくってた。


で、答えに「NULL をはさんでみる。「%3Csc%00」ってあったから「えー、それができねぇんだよなぁ」と思いつつ、次の「数値文字参照」っていうのに着目。そういえば、以前なんかの海外製CMSでHTMLが全て数値文字参照になっててソースコード見てもさっぱり分からないで難儀した記憶が。

そこで、ローカルHTMLにて

<s&#99;ript>alert(document.domain);</s&#99;ript>

ってしてみる。・・・・alertは出ない。


あー、ダメじゃん・・・タグ内の数値文字参照は無視されるんだなぁ。・・・ということに気がつくまで更に一時間弱。

?タグ内ではなくて、タグ名の数値文字参照は無視されるだけなのか?
ということに思い至り、

<a href="javas&#99;ript:alert(document.domain);">hoge</a>

としてみる。ローカルHTMLに保存してブラウザで閲覧。おぉ!なんという嬉しさよ。