DVWA之xss

一、反射(reflected)型

(一)、尝试low等级
输入正常数字,返回以下内容
在这里插入图片描述
再输入<xss>发现,只输出了hello
在这里插入图片描述
我们使用火狐的开发者工具查看下元素
发现hello的后面是一对xss标签
在这里插入图片描述
我们进行弹窗测试
输入<script>alert(/xss/)</script>
发现弹窗,说明存在xss注入
在这里插入图片描述
介绍javaScript的3个弹窗函数
alert() ,confirm() ,prompt()
在这里插入图片描述
攻击者思路
在这里插入图片描述
攻击者web设计
在这里插入图片描述
构造估计的js脚本

document.location就是页面的内容定位到指定的位置,他会访问参数中的地址,参数里面写上刚刚新建的php文件的网址,document.cookie就是赋值给这个php的cookie参数,这个cookie值最终会出现在网站127.0.0.1/cookie.php中
在这里插入图片描述
构造并发送攻击url
在这里插入图片描述
这样子还不行还需要url编码
在这里插入图片描述最后劫持会话
修改cookie,修改为之前获取的cookie值。

(二)、尝试medium等级,
只要在<srcipt>标签中插入一个<script>即可,<src<srcipt>ipt>,因为他过滤了<sript>标签其他步骤与low等级一样。
(三)尝试high等级。
上面的方法都失效了,那么我们想到了img标签也是可以执行js代码的

<img src= x onerror=alert(1)>

在这里插入图片描述
使用iframe标签也可以成功注入<iframe onload=alert(1)>
说明只过滤了script标签
(四)impose等级
查看源码
在这里插入图片描述
发现htmlspecialchars函数
那么这是函数是干啥的呢?
可以把

 &过滤成&amp;
"过滤成&quto;
'过滤成&apos;
<过滤成&lt;
>过滤成&gt;

二、存储型(stored)反射

(一)、尝试low等级
使用火狐浏览器开发者工具,发现name被限制为10个字符,message被限制为50个字符.这对我们xss注入是不够的。
在这里插入图片描述
那么我们就抓包发送name,message参数
成功绕过了限制
在这里插入图片描述
存储型的数据是存在数据库里,大家可以选择
setup/resetDB重置数据库,清楚数据
(二)尝试medium等级
发现name过滤alert ,和script标签,message过滤了script标签。尝试script大小写发现无法弹窗
这个是部分源码
在这里插入图片描述
我们尝试iframe标签

txtName=<iframe onload=alert(/xss/)>&mtxMessage=<iframe src =1 onload=alert(/ss/)>&btnSign=Sign+Guestbook

在这里插入图片描述
发现name成功弹窗,但是message不行,不过没关系,可以进行xss注入

(三)、尝试high等级
和medium的方法一样,不同是high等级的message对< > “ & ‘进行了处理
(四)、尝试impose等级
查看源码
在这里插入图片描述
name和message都对< > \” & \’进行了过滤

三、DOM型XSS

(一)、尝试low等级
我们尝试注入

http://localhost/DVWA/vulnerabilities/xss_d/?default=<script>alert(/hack/)</script>

在这里插入图片描述
成功进行注入,查看源码发现,没有任何保护措施
在这里插入图片描述
(二)、尝试medium等级
发现low等级的方法已经失效了,经过尝试可以发现,script标签被过滤了,过滤成English。
查看源码发现只过滤了script标签
在这里插入图片描述
那么我们尝试 下<img src= x onerror=alert(1)>
页面没有反应
查看网页源代码,发现我们的语句被插入到了value值中,但是并没有插入到option标签的值中,使用img标签没有发挥作用
在这里插入图片描述
我们尝试闭合option

`http://localhost/DVWA/vulnerabilities/xss_d/?default= ></option><img src= x onerror=alert(1)`>

发现还没没有闭合成功。
在这里插入图片描述
我们闭合用的><被闭合到option的值当中去了
。那么我们往更高一层的select标签闭合

http://localhost/DVWA/vulnerabilities/xss_d/?default=  ></option></select><img src=1 onerror=alert('hhh')>

成功注入
在这里插入图片描述
(三)、尝试high等级
尝试了一番之后没有结果
我们查看下源码,发现源码使用了白名单的方法,
在这里插入图片描述
那我们是不是可以使用#注入,第一次从本地写入,第二次刷新的时候执行我们注入的xss

http://localhost/DVWA/vulnerabilities/xss_d/?default=English#</option></select><BODY ONLOAD=alert(document.cookie)>

成功注入
在这里插入图片描述

(四)、impose等级

发现我们输入什么都会在客户端体现,查看源码
在这里插入图片描述
发现在客户端进行了保护。
在这里插入图片描述
这段代码的功能是
不会对URL输入进行URL编码过的内容再进行URL解码从而杜绝了DOM型XSS,这就是为什么我们输入什么就会在框中体现
在这里插入图片描述

0%