首页 > 其他分享 >pikachu靶场第八关——XSS(跨站脚本)之DOM型xss(附代码审计)

pikachu靶场第八关——XSS(跨站脚本)之DOM型xss(附代码审计)

时间:2024-03-20 12:29:50浏览次数:27  
标签:XSS 跨站 鼠标 xss 标签 触发 DOM 事件

什么是DOM?
简单来说DOM文档就是一份XML文档,当有了DOM标准之后,DOM便将前端html代码化为一个树状结构,方便程序和脚本能够轻松的动态访问和更新这个树状结构的内容、结构以及样式,且不需要经过服务端,所以DOM型xss在js前端自己就可以完成数据的输入输出,不与服务器产生交互,这样来说DOM型xss也可以理解为反射性xss。

所以说DOM型xss可以在前端通过js渲染来完成数据的交互,达到插入数据造成xss脚本攻击,且不经过服务器,所以即使抓包无无法抓取到这里的流量,而反射性与存储型xss需要与服务器交互,这便是三者的区别。

源代码:

 <div id="xssd_main">
                <script>
                    function domxss(){
                        var str = document.getElementById("text").value;
                        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
                    //试试:'><img src="#" onm ouseover="alert('xss')">
                    //试试:' onclick="alert('xss')">,闭合掉就行
                </script>
                <!--<a href="" onclick=('xss')>-->
                <input id="text" name="text" type="text"  value="" />
                <input id="button" type="button" value="click me!" onclick="domxss()" />
                <div id="dom"></div>
            </div>

让我们先随便输入一个值,111。

尝试闭合标签,111'</a><script>alert("xss")</script>

不出意外的,出了意外。

因为script标签主要用于从服务器端加载一段javascript脚本并在当前页面中执行

那么换一个标签或者通过事件就好了

'><img src="#" οnmοuseοver="alert('xss')">

插入图片标签,事件为将鼠标箭头移动至图片上方时,弹出xss

' οnclick="alert('xss')">

没有插入标签,事件为点击<a>标签的超链接,弹出xss

当然还有很多有意思的事件

onclick 鼠标点击事件

ondblclick 鼠标双击事件

onmousedown 鼠标上的按钮被按下了

onmouseup鼠标按下后,松开时激发的事件

onmouseover 当鼠标移动到某对象范围的上方时触发的事件

onmousemove 鼠标移动时触发的事件

onmouseout 当鼠标离开某对象范围时触发的事件

onkeypress当键盘上的某个键被按下并且释放时触发的事件.[注意:页面内必须有被聚焦的对象]

onkeydown当键盘上某个按键被按下时触发的事件[注意:页面内必须有被聚焦的对象]

onkeyup 当键盘上某个按键被按放开时触发的事件[注意:页面内必须有被聚焦的对象]

大家可以自行收集并尝试哦

标签:XSS,跨站,鼠标,xss,标签,触发,DOM,事件
From: https://blog.csdn.net/yzasts/article/details/136869997

相关文章

  • Windows 系统中进行一些域管理操作 net group /domain 命令 参数
    Windows系统中进行一些域管理操作。以下是一些常见的用法和参数:列出所有域用户组:bashCopyCodenetgroup/domain查看特定用户组的成员:bashCopyCodenetgroup"GroupName"/domain添加用户到指定用户组:bashCopyCodenetgroup"GroupName"UserName/add/domain......
  • DOM事件流
      DOM事件流描述了在HTML文档中,事件是如何从触发元素传播到文档根节点的过程。DOM事件流  DOM事件流分为三个阶段:捕获阶段(CapturingPhase)、目标阶段(TargetPhase)和冒泡阶段(BubblingPhase)。捕获阶段(CapturingPhase):事件从文档根节点开始向下传播,经过父级元素直到......
  • react使用map循环渲染dom时,增加或删减数组,但想保持其余的dom与数据不发生改变
     核心思路:dom渲染与key值有关系,如果想实现上述需求,则需要关注改变前后的循环项的key值是否发生改变currentCabinet?.map((item,index)=><BaseInfokey={`currentCabinet${item?.ciId}`}sceneKey={sceneKey}currentCabinet={item}/>)如以上示例,以ciId为key值,可以保证即......
  • 深入学习 XML 解析器及 DOM 操作技术
    所有主要的浏览器都内置了一个XML解析器,用于访问和操作XMLXML解析器在访问XML文档之前,必须将其加载到XMLDOM对象中所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XMLDOM对象解析文本字符串以下示例将一个文本字符串解析为XMLDOM对象,并使用JavaScript从中提取......
  • XSS及防御
    一,什么是XSSXSS(跨站脚本攻击,Cross-SiteScripting)是一种常见的安全漏洞,攻击者通过在网页中注入恶意脚本,使得用户在浏览网页时执行这些恶意脚本,从而达到窃取用户信息、会话劫持等恶意目的。通常恶意脚本不仅限于JavaScript,还包括Java,VBScript,Flash,ActiveS;二,XSS及类型1,XSS攻......
  • perl 用 XML::LibXML DOM 解析 Freeplane.mm文件,生成测试用例.csv文件
    Freeplane是一款基于Java的开源软件,继承Freemind的思维导图工具软件,它扩展了知识管理功能,在Freemind上增加了一些额外的功能,比如数学公式、节点属性面板等。在云计算中,解析XML元素和属性是一种常见的操作,因为XML是一种常见的数据交换格式,可以用来表示各种不同的数据结......
  • JS DOM操作(三)
    1.操作节点获取节点属性:语法getAttribute(“属性名”);varvalue=element.getAttribute("data-custom");//请注意,获取节点属性时,如果属性不存在,则会返回null2.设置节点属性:语法setAttribut(“属性名”,“属性值”);element.setAttribute("data-custom","val......
  • JS DOM操作(一)
    .#1.DOM操作分类1.1DOMcore(核心操作)document:表示整个文档,可以用于访问文档的各个部分和属性。Element:表示HTML元素,提供了访问和操作元素的方法和属性。Node:表示文档中的节点,包括元素、文本节点、注释等,提供了节点通用的方法和属性。1.2HTML-DOM获取元素:通过ID、类......
  • Light Random Sprays Retinex 传统的图像增强算法LRSR
    文章目录前言1、LightRandomSpraysRetinex概况2、LightRandomSpraysRetinex具体实现2.1、噪声去除2.2、亮度调整2.3、插值技术3、LightRandomSpraysRetinex源码4、LightRandomSpraysRetinex效果及结论前言  LightRandomSpraysRetinex,即“光随......
  • numpy中random.seed()与random.RandomState()的区别
    1.random.seed()用处:初始化随机数生成器。设置随机数生成器种子后,直接生成随机数即可,无需在随机数生成器条件下运行。2.random.RandomState()作用:获得随机数生成器 比较上面两图可以看出,获取随机数生成器之后,必须在此条件下运行,才可生成相同的随机数,若不在此条件下运行,随......