赞
踩
XSS漏洞是攻击者将恶意代码注入到合法网页中,当用户浏览该页面时,恶意代码会被执行,从而获取用户敏感信息或进行其他攻击。
网站对用户输入数据的过滤不严格或不完备,攻击者可以根据这个漏洞向网站提交恶意代码,然后再将这些代码传播给其他用户,从而造成危害。
查看源码,发现没有任何过滤,就是直接把用户输入的内容反射给浏览器。
这里直接在输入框里面输入代码:<script>alert("GXY")</script>。
查看源码如下图所示,下图方框中的代码作用是替换name中的出现的<script>,那就可以通过改变<script>的大小写来绕过。
源码是通过referrer这个字段的参数进行判断的,通常情况下在增加referrer验证时就是网站本省当前页面的ip地址,这里需要抓包看看相关信息。
这里在输入框里面可以输入代码:<SCRIPT>alert("GXY")</script>(这里的可以将<script>里面的任意字母改为大写即可),此处也可以通过双写(即写两个嵌套的script)来绕过,即在输入框里面输入代码:<s<script>cript> alert("GXY")</script>。
查看源码如下图所以,这里i是正则表达式,表示in-casesensitive,即大小写不敏感。然后代码里面的(.*)看不太懂,去网上查找发现是正则表达式(“.”表示匹配除换行符\n之外的任何单字符,“*”表示零次或多次),“.*”意思就是任意字符出现零次或多次。以表达式a.*b为例,它将匹配最长的以a开始,以b结束的字符串。
这里的输入框就可以不用输入<script>标签,可以换成其他标签输入,这里我输入的<body οnlοad=alert’GXY’>。
这里在name输入框里面随意输入一个代码,然后在message输入框里面输入代码<script>alert("GXY")</script>。
对于name栏,它的长度是有限制的,所以代码不能完整的写进去,解决办法就是把这里的长度改大一些,直接F12,查看源码,在图中位置更改长度。
然后再回到dvwa的界面,在name栏就可以输入完整的代码段,然后message里面的内容可以随意写。
仍然使用刚刚的构造,渗透失败了,但是发现系统把<script>标签过滤掉了。然后查看源码,可以看到,由于对message参数使用了htmlapecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只限制了输入长度,过滤了。
补充:strip_tags()函数:剥去字符串中的HTML、XML以及PHP的标签,但允许使用标签;addslashes()函数:返回再预定义字符(单引号、双引号、反斜杠,NULL)之前添加反斜杠的字符串。
这里由于name长度不能超过10,所以这里通过修改html源码把name的长度改大一些。(这里把长度10改成了10000)。
然后在name栏里面就可以输入完整的代码,但是依然渗透失败,于是参考之前做反射型XSS时的思路,采用大小写混写,居然成功了。
还可以使用工具burpsuit抓包解决,首先抓取到数据包后把代码段(这里依旧是采用大小写混写模式)添加到图中1的位置,然后点击forward。
在浏览器中就可以看到刚刚对数据包操作后,浏览器给出的响应。
使用工具burpsuit抓包解决,首先抓取到数据包后把代码段(这里采用其他标签,我是用的<body>标签)添加到图中1的位置,然后点击forward。
在浏览器中就可以看到刚刚对数据包操作后,浏览器给出的响应。
同样的这里把name栏的长度改大一点,然后采用其他标签的方式进行渗透。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。