标题: 邪恶的eval和new Function
作者: Demon
链接: https://demon.tw/copy-paste/eval-and-new-function.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
代码:
// 友善提醒:为了你的手指安全,请在Chrome下运行 'alert("hello")'.replace(/.+/, eval); 'alert("hello")'.replace(/.+/, function(m){new Function(m)();}); var i = 0; eval(new Array(101).join('alert(++i);')); var i = 0; new Function(new Array(101).join('alert(++i);'))();
解释:
string.replace(regexp, replacement)
: replacement可以是function. In this case, the function is invoked for each match, and the string it returns is used as the replacement text.new Function(argument_names..., body)
: 注意参数中的body. 这样,用new Function('body')()
, 也可以像eval一样动态执行代码。array.join(separator)
: 这个最简单,不多说。在这里,巧妙的用来解决了一个无聊问题:写段代码,运行后打印出从1到100的整数,不允许使用循环、跳转和递归。
这些代码可以干什么?可以肯定的是可以干很多猥琐的事。具体是啥呢,自己想啰。
原文链接:邪恶的eval和new Function
赞赏微信赞赏支付宝赞赏
随机文章:
var i = 0;var sum = 0;eval(new Array(101).join(‘sum+=++i;’)+”alert(sum)”);
引号变了
WordPress会自动把引号变成全角。
改写成VBS,就是所谓的“骨灰级”。