DVWA XSS
DOM Based Cross Site Scripting (XSS)
low
打开是一个菜单选项,提交以后发现URL有参数,修改一下呢?成功了,那直接试一下xss脚本<script>alert(document.cookie);</script>,成功获取到cookie
medium
构造代码<script>alert(document.cookie)</script>,没效果?应该是有过滤机制,试一下双写,还是不行,会不会是转义问题?直接利用URL编码对尖括号和斜杆进行编码,> 转为%3C,< 转为%3E,/ 转为%2F,也不行,空格绕过scr ipt,不行,好嘛,继续看还有什么绕过,最后,还是得从返回结果中分析,看第一次的代码,虽然没有弹窗,但是alert(document.cookie)却存在审查下元素,分析应该是<script>和</script>直接被删除掉了,
我说绕来绕去就是绕不过,居然被删除了,没办法,继续查,查到说还可以利用事件绕过,比如像是img中的onerror事件,即就是说如果加载图片错误,就会执行该事件,那好办了,随便设置一个不存在的src,直接将xss写入到事件中
<img src="" οnerrοr=alert(document.cookie) >
嗯?也不行?闹半天,是忘了闭合前面的标签,还得再心细点呀
</option></select><img src="" οnerrοr=alert(document.cookie)></option>
high
这一关不管咋构造都没有效果,莫得办法,只有先查查源码,就当提前代码审计吧。在上面的代码中发现除了规定的选项以外。其他的一概被默认设置为English,但是代码中有个注释符#,既然是PHP语言,那可不可以利用注释绕过检测呢?构造注释xss:
#<script>alert(document.cookie);<script>
成功绕过PHP的检测,在HTML中执行
Reflected Cross Site Scripting (XSS)
low
输入<script>alert(document.cookie)</script>,成功
medium
输入<script>alert(document.cookie)</script>,观察回显发现<script>没有了,有过滤机制,先试试看双写绕过<scrscriptipt>,没有,<scr<script>ipt>呢?成功
high
输入xss脚本,发现只有右尖括号,猜测可能是有转义、替换或者删除咋绕过嘞,还是先试试双写、URL编码这些,都没用,前面好像查到过可以用事件,那试试
</p><img src="" οnerrοr=alert(document.cookie) >,成功
Stored Cross Site Scripting (XSS)
low
在留言板输入xss后直接弹窗,且xss被保存在了留言中,每次刷新页面时,浏览器都会重载并再次执行该脚本
medium
观察回显,发现没有<script>,尝试双写绕过<scr<script>ipt>,也不行试一下通过事件绕过<img src="" οnerrοr=alert(document.cookie) >,不行,再试试注释#,不行,想半天,结果是name没有进行script的过滤,在name框中就可以成功,惯性思维有时候还真坑。这里如果受到了长度的限制,可以通过burp抓包修改数据或者审查元素修改网页代码写入xss
high
输入<script>alert(document.cookie)</script>没有效果,应该对script进行了过滤,尝试通过标签事件绕过写入xss:<img src="" οnerrοr=alert(document.cookie) >,不行,在name框中写入,成功。(长度受限问题解决方法和前面一样)