目前已经出现了利用js的特性进行特殊编码变形绕过防御的手段,举例如下。
1.Jsfuck
Jsfuck可以针对常见的js函数、语法进行编码转换:
False => ![] True => !![] Undefined => [][[]] Nan => +[![]] 0 => +[] 1 => +!+[] 2 => !+[]+!+[] 10 => [+!+[]]+[+[]] Array => [] Number => +[] String => []+[] Boolean => ![] Function => []["filter"] Eval => []["filter"]["constructor"]( code )() Window => []["filter"]["constructor"]("return this")()
以常见的攻击载荷alert(/1/)为例:
alert(/1/)
编码后内容如图4-3所示。
图4-3 Jsfuck示例
2.Aaencode
js加密工具aaencode把js转为文字表情符号。以常见的攻击载荷alert(/1/)为例:
alert(/1/)
编码后内容如图4-4所示。
图4-4 aaencode示例