Подтвердить что ты не робот

Как я могу сказать "любовь" без символа или цифр в JavaScript?

Вдохновленный 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.

4b9b3361

Ответ 1

Хорошо, по крайней мере, в Firefox, родные объекты JavaScript возвращают function Object() { [native code] }, у которого есть 'v'. Итак, если мы имеем window и Object, то, предположим, мы могли бы сделать:

(window["Object"]+0)[29];

Ответ 2

Такое же сообщение, но другое написание.

// "I <3 u"
_= +~[]; // 1
__= -[]; // 0
___= +(-~[] -~[] -~[]); // 3
$=''
+(''+(_/__))[__] // i
+' ' // space
+'<'+___ // <3
+' ' // space
+(''+(_<__))[+(-~[] -~[])]; // u
alert($); 

ссылка jsfiddle

Ответ 3

alert("\u2665"); // results in ♥

Ответ 4

попробуйте этот код:

$=(Å='',[Ç=!(µ=!Å+Å)+{}][Ç[È=++Å-~Å]+Ç[È+È]+µ[Å]+µ[Å-Å]])();
_=$[Ç[È+È+Å]+µ[Å-Å]+Ç[È+È]+Ç[Å]]("¾");
console.info( _[+[]] ); // concole is used just to show result ;)

если вы запустите его, на консоли вы получите "v":), более подробную информацию об этом можно найти там

есть способ избежать "¾", но результатом будет "V" (на самом деле ничего плохого для такого слова, как love:):

$=(Å='',[Ç=!(µ=!Å+Å)+{}][Ç[È=++Å-~Å]+Ç[È+È]+µ[Å]+µ[Å-Å]])(); // we get window object
_=$[Ç[È+È+Å]+µ[Å-Å]+Ç[È+È]+Ç[Å]]( $ ); // we use btoa function with argument "[object Window]", 
// and it returns "W29iamVjdCBXaW5kb3dd" - as you see there is V 
$$=-~!''; // 2
$$$=-~$$; // 3
console.info( _[$$*$$$] ); // "V";

btoa создает кодированные данные из данной строки, используя кодировку base-64. Фактически, играя с этой функцией и изменяя аргументы, вы можете получить разные символы:)