hasegawayosukeさんのトリックを再構したいのだけれど(2)
ロードマップを考えてみました
なにか指標がないと考えにくいと気がついたのでロードマップをと。
第二段階
使えそうなローマ字を拾いまくって蓄積する。
たとえば、「a」なら。
+{} + ''
最初に「+{}」でもって「NaN」オブジェクトを作成し、空の文字列「''」をプラス記号で結合してあげて強制的にstring型オブジェクトに型変換してあげます。これで文字列「NaN」が作成できました。次に、この文字列の2番目の文字を切り出してくれば「a」が求められます。Firefoxでは、こうした場合に、strA[1]が可能です。(このためにこそ最初に数字を用意するのだ!)たぶん、Operaも大丈夫なはず。InternetExplorerは全くためしていないのでなんともわかりません。
同様の手段で文字を拾えそうなものを列挙。
- false
- true
- NaN
- Infinity
- undefined
- [object Object]
- RegExp→gとpとxとが貴重。nativeのvも。
第三段階(以下は未定)
たぶん、escape,unescapeで文字を作成する段階に突入。うーむ。たぶん、「w」はなかなか作れないから、「%」を捏造するしかない。
ん?eとvとaとlが拾えていますね。これは良い兆候。
第四段階
0x1.constructor.constructor
を使って、文字列をevalってさしあげる、というか直接eval関数を最初につくるべきか?
追記
たった今、思いついたのだけれども、「h」がいけそうな気が。
httpを切り出したい…と思ったらメソッドが動きましたよ?永久ループかい!(笑)
location + ''