实验24:dom型xss详解及多种场景演示

什么是dom?
实验24:dom型xss详解及多种场景演示_第1张图片
举个例子来理解一下dom
我们直接进入w3school这个网站来查看dom的实例
在这里插入图片描述
实验24:dom型xss详解及多种场景演示_第2张图片
我们点开
在这里插入图片描述
这边就是一段纯html的代码
实验24:dom型xss详解及多种场景演示_第3张图片
我们再把它原有的java script代码放回去
实验24:dom型xss详解及多种场景演示_第4张图片
这段代码就是对x进行一个getElementById的赋值,当你点击这个标题的时候,他会把值转给function,然后就会弹出一个这是标题的框
实验24:dom型xss详解及多种场景演示_第5张图片
这一整个过程都是在前端进行的,没有与后台进行交互,所以说dom就是一个在前端的操作接口。
dom型xss漏洞演示
我们直接进入pikachu平台
实验24:dom型xss详解及多种场景演示_第6张图片
我们随便输入一些数字,发现他回应了这个,我们来看一下源码,来看看它做了什么操作
实验24:dom型xss详解及多种场景演示_第7张图片
进入源代码页面,搜索一下what,我们可以定位到这个地方
实验24:dom型xss详解及多种场景演示_第8张图片
发现这上面就是我们刚刚看到的一个dom方法,他把我们输入的东西赋值给了str,之后又通过字符串拼接的方法将我们的输入写到了a标签的href里面,那么接下来,我们如何去确认这个地方是否有xss漏洞,他的输入点就在页面的input里面,那么输出点在哪呢?
之前我们说过输出都是在后台返回来输出的,但这里不同,这里在前面的input里面获取输入后,直接在dom的getElementById给获取下来,在下面的div中输出
实验24:dom型xss详解及多种场景演示_第9张图片
而且我们发现,在输入和输出的过程中,他是没有做任何的转义操作的
那么我们将这一段复制下来,去构造一个闭合
实验24:dom型xss详解及多种场景演示_第10张图片
根据这段代码我们就能发现,中间str的部分便是我们可以控制的部分,之后我们在这中间构造闭合,比如我们可以去弹个窗

#' "alert(666)">

实验24:dom型xss详解及多种场景演示_第11张图片
提交以后发现,底下的 what do you see前面多了一个单引号,此时点开他,会发现如我们想的一样弹出了窗口
实验24:dom型xss详解及多种场景演示_第12张图片
虽然这个地方刷新一下的话就没了,但其实这个地方也就是一个很低级的前台dom,不与后台去进行交互的一个漏洞,前端的dom千奇百怪,谁也不知道程序员会怎么写这个dom
我们再从pikachu平台上来看一下这样的dom
实验24:dom型xss详解及多种场景演示_第13张图片
我们随意输入几个字符
实验24:dom型xss详解及多种场景演示_第14张图片
继续来看看后代源码的逻辑,发现这里有我们熟悉的闭合
在这里插入图片描述
所以我们接着输入刚才的payload
实验24:dom型xss详解及多种场景演示_第15张图片
发现这里也弹出了我们想要的框框
实验24:dom型xss详解及多种场景演示_第16张图片

http://127.0.0.1/pikachu/vul/xss/xss_dom_x.php?text=%23%27+onclick%3D%22alert%28666%29%22%3E#

我们这边也发现了在url上的提交,也就是说,我们如果把这段代码发给别人,就可以造成一些危害。

你可能感兴趣的:(作业)