expression()の中みをカンマでくぎる
IEのstyleで使われる?expression() についてのメモが机の中から出てきました。なにかの記事を読んであとで調べて見ようとメモしたものの忘却の彼方に・・・というメモ。
style="zoom:expression();"
の括弧の中に、
this.style.zoom||()
があって、そのまた括弧の中に
this.style.zoom=1,alert('xss')
とか書いてある風味でした。なんじゃこのメモは!
最初に驚いたのは、expression()の中みをカンマでくぎる風味になっている風味なのであって、これにはちょっと驚きました。なるほど風味。
2番目に驚いたのは、ifの代わりに||を使っているあたり。盲点。
3番目に驚いたのは、これだと、alert('xss')が1回しか発動されないところなのでした。なるほどなるほど風味。でもどうしてこうなるのかわからない風味。
いずれにせよ、まとめると上は公開するPoCに使うのには便利な風味。いや、そうでないとほら、DoSになっちゃうから。かわいそうでしょ?サーバが。
※office氏は、XSSのPoCにexpressionは絶対に使わない流儀であったような・・・サーバ負荷を考えてのことだったのかもしれませんね。世間では誤解されているかもしれないけれど、細かいところに黙って気を使う人なのです、officeさんは。