Вдохновленный Ryan Barnett PPT BlackHat DC 2011, особенно код ниже:
($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+ ($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__ [_+~$]+$_[_]+$$](_/_)
Вчера был особый день для любовников, поэтому я попытался написать что-то подобное. Который в основном предупреждает "Я люблю тебя" без каких-либо символов или цифр.
например. "I" можно получить из ((_=-~[])/--_+[])[_]
у нас есть "[Object Object]", "true", "false", "NaN", "Infinity" для использования, я не могу найти способ получить "v" таким образом.
Я попытался придумать String.fromCharCode()
, (Ryan уже получил ссылку window
для нас, поэтому теоретически мы можем window["String"]["fromCharCode"](118)
), однако я пропускаю здесь символ "S" и "C". Также подумайте о window["eval"](...)
, опять же, у меня нет "v".
Просто попробуйте немного объяснить, []
пуст, когда применяется +/-/~
к нему, он преобразуется в число 0
, а ~[]
дает 1
, 1/0
дает Infinitey
, Затем он приходит к 1/0 + []
, они оба будут преобразованы в строку для добавления, которая дает "Infinity"
и "Infinity"[_] == "Infinity"[0] == "I"
...
Исходный код Райана более сложный, он использует намного больше, включает область, специальное возвращаемое значение и т.д. (это еще одна история)
Это может показаться отличной идеей делать что-то, но очень интересно.
С помощью meze я смог создать это для Firefox:
($=($=[$=[]][(__=!$+$)[_=-~-~-~$]+(_$={}+$)[_/_]+ ($$=($_=!''+$)[_/_]+$_[+$])])())[__[_/_]+__ [_+~$]+$_[_]+$$]((_$_=(__$=-~[])/--__$+[])[__$]+_$[_+++_]+__[__$=-~-~[]]+_$[-~[]]+($[_$[$__=_+_]+_$[++$__]+_$[++$__]+_$[++$__]+_$[++$__]+_$[++$__]]+[])[
$__+$__+--_]+__[++_]+_$[$__=_+--_]+_$_[_+++_]+_$[_/_]+$_[__$]);
это в основном alert("I love you")
, огромное спасибо! Если только я получаю помощь вчера, которую я еще не опубликовал: (
JavaScript красивый, некоторые переменные для вашей справки:
$_ = "true"
__ = "false"
_$ = "[object Object]"
$$ = "rt"
_$_ = "Infinity"
_ = 3 = 4 = 3 = 4 = 3
$ = window
$__ = 8 = 13
__$ = 0 = 2
Некоторые переменные многократно используются, не будут пытаться оставлять детали, это не забавная работа:) Я счастлив, мы, наконец, здесь! Это на самом деле имеет большой потенциал, так как теперь у нас есть "v" и множество цифр, мы теоретически можем сделать eval()
множество... вещей проще. Я покажу это своей жене, надеюсь, что ей понравится _ $- +()...
пример в качестве ссылки: http://jsfiddle.net/Y4wqw/
btw, мы можем немного сократить код, так как мы уже имеем ссылку на sort()
, который можно использовать вместо окна [ "Object" ], чтобы получить "собственный код" = > "v", здесь:
($=($_$=($=[$=[]][(__=!$+$)[_=-~-~-~$]+(_$={}+$)[_/_]+ ($$=($_=!''+$)[_/_]+$_[+$])]))())[__[_/_]+__ [_+~$]+$_[_]+$$]((_$_=(__$=-~[])/--__$+[])[__$]+_$[_+++_]+__[__$=-~-~[]]+_$[-~[]]+($_$+[])[(__$<<__$<<__$)-_+~[]]+$_[--_]+_$[$__=_+++_]+_$_[_+--_]+_$[_/_]+$_[__$]);
Опять же, он работает только в Firefox, возможно, не попытается перейти на другой браузер. И я люблю Firefox.