web基础漏洞-xss绕过
1、大小写绕过
如果服务端是通过确定的大写或小写进行检查,则可以使用大小写混杂等不在过滤范围的表达进行绕过。
2、双写绕过
如果服务端只检查一遍,并将检查的关键字替换为空字符串””,则可以使用双写绕过。
3、引号的错误编码方式
如果是在script标签之外,服务端对’或者”使用\进行转义,则无效。可以进行绕过
4、script标签之间未过滤</>
导致可以</script>关闭当前script标签
5、间隔符使用及绕过
在js代码中,包括事件和script标签之间,间隔符一般是指;字符,可以基于此进行设计。
在html开始标签中,间隔符一般是指空格。一般可以考虑基于此进行另起属性和事件,在属性和事件本身没有引号包围时更佳。
其次,对于;和空格,都可以采用换行符进行代替。效果相同。
对于html属性和事件存在引号包围,还可以使用/字符替代空格。
6、事件中的实体编码
在事件中,使用实体编码可以进行绕过。浏览器先进行实体编码的解码,然后进行事件解析。
7、.字符的绕过
一般来说,xss的利用都会考虑.字符,如果其被过滤。可以考虑[]的方式操作属性,还可以绕过关键字过滤。
window['loca'+'tion']=""
8、base64绕过
如果服务端运行eval函数,但是过滤了其他,可以对敏感字符进行base64编码,然后eval函数执行
9、location绕过
将真正的payload写到location.hash中,然后让xss读取该值后解析,主要用于绕过关键字过滤。
10、脚本中使用/xx/代替引号包围字符串
11、隐式数据转换
基于0和1