1.1 反射型XSS
这个功能类似一个留言板, 输入信息后下面会增加对应的信息。
1.1.1 原理演示
1、输入文本信息后页面汇总会添加我们输入的文本信息:
2、根据4中回显信息判断出显示的文本内容是Hello $name,我们输入的信息被存放在$name变量中。
3、我们添加一条JavaScript代码获取cookie:
<script> alert(document.cookie); </script>

4、查看浏览器中cookie,与获取到的cookie一致。
5、关键点是在通过url控制了页面的输出。URL中JavaScript代码是可以通过URL控制页面输出的:
http://192.168.10.159/DVWA/vulnerabilities/xss_r/?name=%3Cscript%3E+alert%28document.cookie%29%3B+%3C%2Fscript%3E#
1.2 存储型XSS
存储型XSS的优势在于恶意代码被存储到服务器上,比如我们在论坛发帖的过程中嵌入了XSS攻击代码,当我们发布的帖子被用户浏览访问时就可以触发XSS代码。
存储型XSS和反射型XSS的区别是:XSS只会弹一次cookie信息;存储型XSS每次访问这个页面都是会弹出cookie信息,因为XSS代码已经嵌入在了该Web站点当中,所以每次访问都会被执行。
1.2.1 原理演示
1、在留言板中插入JS脚本:
2、后面每次访问该页面都会执行JS脚本,弹出cookie信息:
3、查看数据库数据:
MariaDB [dvwa]> select * from dvwa.guestbook; +------------+--------------------------------------------+------+ | comment_id | comment | name | +------------+--------------------------------------------+------+ | 1 | This is a test comment. | test | | 2 | <script> alert(document.cookie); </script> | leon | +------------+--------------------------------------------+------+ 3 rows in set (0.00 sec)
4、可以看到我们提交的数据被存放在数据库当中,每次用户访问页面时Web程序会从数据库中读取出XSS攻击代码,从而被重复利用。
1.3 DOM型XSS原理
DOM Based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,它其实属于反射型XSS的一种,所以它也通过URL来进行触发XSS攻击。
1.3.1 原理演示
1、通过3可以看到参数在URL地址中是可控的,修改URL中传递的参数为leon , 将光标停留在地址栏上,按下回车,提交数据:
http://192.168.10.159/DVWA/vulnerabilities/xss_d/?default=leon

2、可以看到URL中的参数被带入到页面中被浏览器执行,从而修改页面中的内容变为leon,在url中加入JS脚本:
http://192.168.10.159/DVWA/vulnerabilities/xss_d/?default=<script> alert("leon"); </script>

3、可以看到我们构造的代码都能够被执行。
1.3.2 high级别DOM型XSS攻击
1.3.2.1 分析源码
代码中定义了一个白名单,我们只能选择白名单的内容才可以,输入其他字符无效。
1.3.2.2 构造payload
注入思路:#符号之后的代码不会被发送到服务器,也就是说代码没有被传递到服务器端,但是在本地页面已经加载。
http://192.168.10.159/DVWA/vulnerabilities/xss_d/?default=English#<script>alert("leon")</script>
1.3.2.3 执行payload
