Pull to refresh

Comments 22

остается придумать как повысить права для ноды

Точно так же как и в оригинале, просто запустить node из под рута.


# echo "require('child_process').exec('whoami', (e, so, se) => console.log(so))" | node -
root

И часто вы из под рута сервера запускаете?

А при чём тут сервера? "Программа из одной строчки" предполагает что жертва просто сама запустит её в ближайшем доступном шелле, который с ненулевой вероятностью будет рутовым. С джаваскриптом, правда, всё сложнее, потому что ближайший доступный шелл — консоль браузера, но, как я писал выше, с пришествием node.js подобное стало возможным.

Тогда проще сразу запускать старое проверенное решение всех проблем


rm -rf /
Не проще, «старое и проверенное решение» работать не будет.

# rm -rf /
rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe

В Microsoft Edge твит выглядит менее безобидно.
В огнелисе ничего такого не наблюдается.
P.s. Выдавать код который со 100% вероятностью будут копипастить для теста в виде картинки — это, на мой взгляд, не очень умно.
На Хабре какие-то фильтры, этот код не вставляется, прошу прощения.
В статье не указанно что нужно именно с исходного твита копировать снипет,
for(A in {A(строка которую не рисует хром):0}) в этой скрытой строке и спрятано сообщение что выползает в алерте

Ну вот на закладке с хаброй запустил — ну выводит себе "А" да и все… А потом подумал, что скорей всего, конкретно твиттер (или любой другой ресурс) попросту может определить свойство в прототипе Object, ну или, на крайняк, переопределить метод escape().


Код запускал в Хроме, если что


UPD: в хроме же, на странице твиттера ничего подобного так же не наблюдаю. Зато заметил любопытный оверрайд методов объекта console:


> for (A in {A:0}) console.log(unescape(escape(A).replace(/u.{8}/g, [])));
undefined

> for (A in {A:0}) console.error(unescape(escape(A).replace(/u.{8}/g, [])));
VM381:1 A
Код нужно скопировать из того самого твита, а не набрать вручную

Вот из статьи это никак не следует

Весёлая вещь. В Хроме работает, а в Сафари SyntaxError: Invalid character '\u56128'.

В лисе работает
А еще говорили, что «Javascript такой простой, ведь по легенде он создавался всего за 3 дня...», а тут такое)
Вообще-то за 10 — и это не легенда. А проблема в том, что вы путаете два вида простоты: простота написания интерпретатора/компилятора (тут у оригинального JavaScript'а всё было прекрасно) и простота использования. Возьмите какой-нибудь Malbolge — описание у него не сложнее, чем у JavaScript'а и интерпретатор пишется легко… Но вы пробовали на нём программы писать? А есть Scheme — там, наоборот, разработка велась не один год, зато писать программы много удобнее.
Я думла магия… А там тупо скрытые символы… Не интересно. :(
Sign up to leave a comment.

Articles