XSS注入——DOM型XSS

 DOM型xss

XSS根据恶意脚本的传递方式可以分为3种,分别为反射型、存储型、DOM型,前面两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御,而DOM型不用将恶意脚本传输到服务器在返回客户端,这就是DOM型和反射、存储型的区别

DOM型xss可以在前端通过js渲染来完成数据的交互,达到插入数据造成xss脚本攻击,且不经过服务器,所以即使抓包无无法抓取到这里的流量。

它是基于DoM文档对象的一种漏洞,并且DOM型XSS是基于JS上的,并不需要与服务器进行交互。

DOM型ⅩSS攻击中,服务器在返回HTML文档的时候,是不包含恶意脚本的;恶意脚本是在其执行了非恶意脚本后,被注入到文档里的。通过JS脚本对对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以DOM动态修改页面的内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。

这里推荐一个大佬的博客 是关于dom文档的相关知识

DOM(文档对象模型)学习_dom文档_漫山谷的博客-CSDN博客

接下来利用皮卡丘靶场做一下这三种xss注入

皮卡丘靶场解决问题

我是用phpstudy来进行搭建的 新建了一个数据库

 

这里依据我出现的问题来进行解答

1.靶场未安装

进来就是这个界面  做题时也会出现  Table 'pikachu.users' doesn't exist

可以访问ip/pikachu/install.php 进行初始化安装

2. xss后台无法登录 分两种情况

1.Unknown database 'pkxss' in D:\phpstudy_pro\WWW\pikachu\pkxss\index.php on line 10

出现这种类似的是因为你的pikachu\pkxss\inc里的config.inc.php中的DBNAME没有修改

比如我的DBNAME是pikachu 那就需要改成pikachu

 2.Access denied for user '123'@'' to database 'pkxss' in D:\phpstudy_pro\WWW\pikachu\pkxss\index.php on line 10

出现这种类似的事因为你的前端数据库连接但是可能后端的没连接

pikachu的前端后端都需要连同一个数据库,但是用的两个配置文件,两个配置文件都需要修改参数。只要都修改了就可以了

3.xss后台登录失败

也是因为没有进行初始化的原因

进入install.php 进行初始化就可以了

 1.反射型(get)

尝试普通注入 <script>alert()</script> 但是发现字符长度被限制了

f12源代码 找到修改长度的地方(要是正常找很难找到,所以可以点击输入框,右击鼠标点击检查

找到了 修改长度到100

 接着输入<script>alert('11')</script>

完成

2.反射型xss(post)

先看提示----为了能够让你练习xss获取cookie,我们还是登陆一下,账号admin/123456

登陆进去之后,输入 <script>alert(document.cookie)</script> (这里用document.cookie的原因是因为靶场想让我们练习xss获取cookie  而通过 document.cookie 可以获取与设置 cookie 。)

 成功注入

3.存储型xss

 看到无用提示

 发现这个没什么不同, 依然输入<script>alert(document.cookie)</script> 就可以

4.DOM型xss

 先看提示 说让我们先搞懂dom是什么

输入 <script>alert(111)</script>  试试

发现不行

看看源代码

 

 

 function domxss(){
                        var str = document.getElementById("text").value;
                        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
                    //试试:'><img src="#" οnmοuseοver="alert('xss')">
                    //试试:' οnclick="alert('xss')">,闭合掉就行
               

 

 

找到关键部分  js代码执行后 会将a标签和字符串连接起来 然后输出一个 what do you see?

利用了DOM将字符串进行了拼接并把值给a标签的href

所以我们可以利用已知条件构建payload效果为弹窗 弹窗内容任意 他也给了paylaod

//试试:'><img src="#" οnmοuseοver="alert('xss')">
                    //试试:' οnclick="alert('xss')">,闭合掉就行 

 

发现这两个都可以 成功实现注入 之后的靶场内容会另起一个来写

 

 

 

 

 

 

 

 

 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值