XSS运用之DVWA靶场
为了方便直接使用buuctf上面的环境,DVWA的默认账号是admin密码是password
XSS(DOM)-Low


可以看到是get型
最简单的尝试一下
1 | |

第一题没什么难度
XSS(DOM)-Medium
还是这个题目,但是看左下角的等级,现在是最低级,


先改成Medium(如果改了之后xss(dom)这题还说low那重启一下环境)

普通绕过
先尝试最简单的,无效
1 | |
大小写绕过
1 | |
依然无效
html标签绕过
1 | |
还是无效
只能猜测是闭合标签了
闭合标签+html标签绕过
因为看到源代码里是这样的

这个标签猜测就是option和select了
1 | |

终于成功
XSS(DOM)-High(使用#锚点绕过白名单)
简单的就不测了,用Medium的payload试试
1 | |
无效了,只能查看服务器端这题的源代码
default=只允许是French、English、German、Spanish这几个通过,如果不是这四种字符串的话,就会直接跳到?default=English。所以这题采用了白名单过滤的方法。
这里介绍一个#绕过的方法。这个#叫锚点,#号后面的字符不会提交给PHP服务器,可以直接与浏览器进行交互,所以可以通过这个绕过白名单
1 | |

XSS (Reflected)-low
这就是反射型xss

普通注入即可
1 | |
XSS (Reflected)-medium
普通绕过
1 | |

发现被过滤了,<script>和</script>没有了,可能被删除或替换为空字符串。尝试大小写绕过
大小写绕过

1 | |
直接就成功了
XSS(Reflected)-HIGH
普通绕过
1 | |

只剩一个>了
大小写绕过
1 | |
无效
双写绕过
1 | |
无效
html标签绕过
1 | |

成功
看这题的源码发现使用preg_replace函数进行正则表达式匹配,大小写都会匹配到,替换为空字符串,然后输出,但仅匹配了<script>,未匹配html标签
XSS(Stored)-LOW
存储型xss


输入的都会被输出并且存储
普通绕过
1 | |

发现name被限制输入了

存进去的是空的
可能是message有过滤,但是name只是限制字数,想办法从name绕过

前端做了长度限制而已

成功
XSS(Stored)-medium
普通绕过
1 | |

发现<script>被过滤了
尝试大小写
大小写绕过
1 | |

成功
XSS(Stored)-HIGH
前面的方法肯定都不行,试试html标签绕过
html标签绕过
1 | |

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!