博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】--仅用 []()+! 就足以实现几乎任意Javascript代码
阅读量:6540 次
发布时间:2019-06-24

本文共 2989 字,大约阅读时间需要 9 分钟。

最近在做CTF的题目,遇见了一个都是[]()+!这样的文件,于是百度了一下,发现这个博客对这个有解释。

G Reader里,来自的又一神作

GReader里看不到效果的同学请自行测试下列HTML:

跟Brainfuck有的一拼。。。是挂马的好办法。。。

更新:研究了一下它实现的原理,有一个码表:

(NaN+[]["filter"])[11]', !   window["atob"]("If")[0]', "   ("").fontcolor()[12]', #   window["atob"]("0iN")[1]', $   window["atob"]("0iT")[1]', %   window["atob"]("0iW")[1]', &   window["atob"]("0ia")[1]', '   window["atob"]("0if")[1]', (   (false+[]["filter"])[20]', )   (false+[]["filter"])[21]', *   window["atob"]("0ir")[1]', +   window["atob"]("0it")[1]', ,   window["atob"]("0iy")[1]', -   (NaN+window["Date"]())[31]', .   window["atob"]("1i4")[1]', /   (true+("")["sub"]())[10]', 0-9 ignored*/ ,,,,,,,,,, :   window["Date"]()[21]', ;   window["atob"]("O0")[0]', <   ("")["sub"]()[0]', =   ("").fontcolor()[11]', >   ("")["sub"]()[10]', ?   window["atob"]("0j9")[1]', @   window["atob"]("00A")[1]', A   (+[]+[]["constructor"])[10]', B   (+[]+(false)["constructor"])[10]', C   window["atob"]("00N")[1]', D   window["btoa"](00)[1]', E   window["btoa"](01)[2]', F   (0+[]["filter"]["constructor"])[10]', G   window["btoa"]("0f")[1]', H   window["btoa"]("0t")[1]', I   ("Infinity")[0]', J   window["atob"]("00r")[1]', K   window["btoa"]("(")[0]', L   window["btoa"]("/")[0]', M   window["btoa"](0)[0]', N   ("NaN")[0]', O   window["btoa"](8)[0]', P   window["btoa"]("<")[0]', Q   window["btoa"]("a")[1]', R   window["atob"]("01I")[1]', S   window["btoa"]("I")[0]', T   window["btoa"]("N")[0]', U   window["atob"]("01W")[1]', V   window["atob"]("01a")[1]', W   (true+window)[12]', X   window["atob"]("01i")[1]', Y   window["btoa"]("a")[0]', Z   window["btoa"]("f")[0]', [   (undefined+[]["filter"])[33]', \   window["atob"]("01y")[1]', ]   (true+[]["filter"])[40]', ^   window["atob"](014)[1]', _   window["atob"](018)[1]', `   window["atob"]("02A")[1]', a   ("false")[1]', b   (window+[])[2]', c   ([]["filter"]+[])[3]', d   ("undefined")[2]', e   ("true")[3]', f   ("false")[0]', g   ([]+("")["constructor"])[14]', h   window["atob"]("aN")[0]', i   ([false]+undefined)[10]', j   (window+[])[3]', k   window["atob"]("a0")[0]', l   ("false")[2]', m   (Number+[])[11]', n   ("undefined")[1]', o   (true+[]["filter"])[10]', p   window["atob"]("cN")[0]', q   window["atob"]("cf")[0]', r   ("true")[1]', s   ("false")[3]', t   ("true")[0]', u   ("undefined")[0]', v   (0+[]["filter"])[30]', w   ([]["sort"]["call"]()+[])[13]', x   window["atob"]("eN")[0]', y   (NaN+[Infinity])[10]', z   window["atob"]("et")[0]', {   (NaN+[]["filter"])[21]', |   window["atob"]("03y")[1]', }   (NaN+[]["filter"])[41]', ~   window["atob"](234)[1]'

拼接出来字符串 "eval",如何把 "eval" 变成 eval() 呢?方法是

[]["sort"]["call"]()["eval"]

其中 []["sort"]["call"]() 等于 [].sort.call() ,等价于 window,所以上面 []["sort"]["call"]()["eval"] 就等价于 window.eval

然后就是体力活了,把码表对应转换成 eval("blah blah") 这种形式就可以执行任意代码了

的码表不一样。 Chrome和Firefox的index就不一样。

其实这个码表还可以通过 ·toLocal*()` 函数族扩展到Unicode,比fromCharCode要简短 :D

博客文章 by  is licensed under a .

转载于:https://www.cnblogs.com/vegetables-Adanos/p/5479912.html

你可能感兴趣的文章
励志决心
查看>>
【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行
查看>>
Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
查看>>
某篇ctr预估ppt的链接
查看>>
在CentOS7中配置网络时常见的LSB加载失败问题
查看>>
Kafka 0.7.2 单机环境搭建
查看>>
经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a;
查看>>
Dcloud课程6 php脚本如何在Linux下定时更新数据
查看>>
js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化
查看>>
ubuntu下msmtp+mutt的安装和配置
查看>>
利用sqoop对mysql执行DML操作
查看>>
hibernate中视图的映射
查看>>
Ionic3 UI组件之 ImageViewer
查看>>
flask框架----flask基础
查看>>
Oracle之RMAN备份及还原
查看>>
蓝桥杯-学校的第一次练习题
查看>>
spring中注解说明
查看>>
hdu 4135 -Co-prime
查看>>
二叉树的建立与先序、中序、后序遍历
查看>>
QLabel显示图片,图片可以自适应label的大小
查看>>