Передайте это как первый аргумент:
C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))
Если исходный код находится в файле tehtmi.lua
, запустите (в bash или аналогичной оболочке):
lua tehtmi.lua 'C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))'
Он также работает на Lua 5.3, который использует TIO, так что почему бы не попробовать его в Интернете? ? Я не тестировал реализацию, которая использует ядро "PUC-Rio's Lua 5.1" (потому что я не могу найти какую-либо информацию), но мое решение, вероятно, также работает там.
Как?
Первый аргумент запускается как код, но только если он содержит менее 5 строчных символов.
Хитрость в том, чтобы бежать print("Hello, World!")
. Другой способ запустить это - использовать_G["print"]("Hello, World!")
только строки.
Но мы не можем использовать строку напрямую из-за ограничения количества строчных букв, однако вы можете запустить ("").char
функцию string.char
, которая может преобразовывать серию байтов в строку. Я назначил его переменной верхнего регистра (чтобы мы не достигли предела), чтобы мы могли использовать его для создания строк print
и, и Hello, World!
строк, которые можно использовать, как описано выше.