Who are you?
》ごみばこ @sters9
》いけいけうぇっぶえんじにゃあ(=^-ω-^=) ×PHPでケーキを焼いたり
×最近イイ感じです♡
せっかくなので解説。
記号でプログラムを書く ↓
文字列からJSを実行する ↓
Eval相当が必要 ↓
Function("alert()")() を実行する ↓
せっかくなので解説。
Function("alert()")() を実行する ↓
せっかくなので解説。
Function("alert()")() を実行する ↓
"alert()" を創る必要がある ↓
せっかくなので解説。
Function("alert()")() を実行する ↓
"alert()" を創る必要がある ↓
文字を創るために 数字を創る必要がある ↓
せっかくなので解説。
Function("alert()")() を実行する ↓
"alert()" を創る必要がある ↓
文字を創るために 数字を創る必要がある ↓
(闇)
1をつくる
-(~[]) // 1をつくる [] 配列生成 ~ not演算子 => 1の補数ってやつ。 ビット反転。 ~[] ~0 と同義 = -1 ~"" などでも同様 つまり -(~[]) は 1
2をつくる
-(~[]) << -(~[]) // 2をつくる 1 << 1 1 を 1 ビット左シフト つまり (0001) が (0010) となり 2
"[object Object]"
({})+'' {} 空Objectを生成 + '' toStringメソッドの 暗黙的呼び出しが発生する Object型のtoString 未定義であれば "[object Object]"
"true" をつくる
(!![])+'' ![] !true と同義 !![] !!true と同義、 !!true は true true + "" toString変換 ➡ "true"
"undefined" をつくる
[]['']+'' 未定義オブジェクトを参照しにいく → undefined undefined + '' → toString変換により "undefined"
"constructor" をつくる
生成した数値と文字列を利用して、charAtメソッドから取り出す
Function をつくる
[].constructor.constructor
Function をつくる
[].constructor.constructor Array.constructor => function Array(){} (function Array(){}).constructor => Function Function(){}
alertをつくる
生成した数値と文字列を利用して、charAtメソッドから取り出す