集中实习作业四

 总结反射型、存储型、DOM型XSS

反射型XSS

特点:

1.非持久性:攻击载荷(payload)不会存储在目标服务器上,而是通过URL参数、表单字段或HTTP头等方式传送到受害者的浏览器并执行。
2.特定性:被攻击对象是特定的,通常需要用户点击一个包含恶意脚本的链接才能触发攻击。
3.前端执行:恶意脚本在受害者的浏览器前端执行,不涉及服务器端的直接交互。

危害:

1.窃取用户数据,如cookie、会话令牌等。
2.冒充用户身份进行非法操作。

存储型XSS

特点:

1.持久性:攻击脚本被永久地存放在目标服务器的数据库或文件中,每当用户访问包含该脚本的页面时,脚本都会被执行。
2.非特定性:攻击者将存储型XSS代码写进有漏洞的网站上后,所有访问该页面的用户都可能成为受害者。
3.隐蔽性高:由于攻击脚本存储在服务器上,因此很难被用户直接发现。

危害:

1.危害面更广,可以影响大量用户。
2.可能导致用户机器成为DDoS攻击的肉鸡。
3.盗取用户敏感私密信息。

DOM型XSS

特点:

1.客户端执行:恶意脚本不是通过服务器响应传送到用户浏览器,而是通过浏览器自身的DOM(文档对象模型)操作来触发执行。
2.不依赖服务器:攻击过程完全在客户端进行,不涉及服务器端的任何改变。
3.隐蔽性强:由于攻击发生在客户端,服务器端的日志可能不会记录任何异常,使得检测和追踪变得更加困难。

危害:

1.窃取用户的敏感信息。
2.修改页面内容,误导用户。
3.进行其他恶意活动,如钓鱼攻击。

区别

(1)被攻击对象的不同
反射型XSS的被攻击对象一般是攻击者去寻找的,所以这种攻击范围不是特别的广。而存储型XSS是广撒网的方式或者指定的方式,就是攻击者将存储型XSS放在一些有XSS漏洞的网站上,只要有用户访问这个链接就会中招,而攻击者也可以寻找被攻击对象。存储型XSS的危害性更大,范围更广,可以不需要寻找被攻击对象,只要存储型XSS在服务器上就能实施攻击。DOM型XSS的被攻击对象和反射型XSS被攻击对象差不多,给攻击对象放送URL。

(2)解析位置不同
反射型XSS的脚本被解析的地方是浏览器,而存储型XSS的脚本被解析的地方是服务器,DOM型XSS也是浏览器,反射型XSS需要联网,而DOM型不需要!

(3)存储时间不同
反射型XSS是既有即用,没有持久性,而存储型XSS是存储在服务器上,DOM型XSS和反射型差不多,反射型XSS是必须得特定的URL,存储型就不同,只要服务器里面有存储型XSS,不论是不是官网,被攻击对象都会被攻击。

(4)允许输入点的不同
一般情况下,反射型XSS在搜索框,或者是页面跳转这种。而存储型XSS一般是留言,或者用户存储的地方,而DOM是在DOM位置上,不取决于输入环境上。


XSS 的fuzz字典

https://github.com/fuzzdb-project/fuzzdb

https://github.com/TheKingOfDuck/fuzzDicts

https://github.com/TuuuNya/fuzz_dict

https://github.com/jas502n/fuzz-wooyun-org

XSS挑战靶场打靶

第一关

第二关

进入后页面如图,显示需要我们输入参数进行搜索

同时注意到在地址栏可以直接传参,尝试跟level1一样直接使用最简单的不带任何绕过方式的js代码进行传参测试,没有相关结果

查看网页源代码,发现我们输入的值直接放在了value中,并不会执行;需闭合前面的<input name=keyword value=",所以输入"><script>alert(1)</script>;进行传参测试,成功

第三关

查看网页源代码,发现我们输入的书名号被htmlspecialchars函数改成了文本的形式,但是输入的单引号‘没有被修改,构建一个新的测试代码'οnmοuseοver=javascript:alert() ',发现通关成功

第四关

查看网页源代码,可见中间的try harder!为输入框内容,会被h2打印出来。使用了双引号

我们构建与第三关所用类似的代码" οnmοuseοver=javascript:alert() ",通关成功

总结浏览器解析机制

浏览器解析机制是浏览器将用户输入的URL或HTML文档转换成可视化网页的过程,这一过程涉及多个复杂步骤和组件的协同工作。

1. URL解析与缓存检查
URL解析:浏览器首先解析输入的URL,识别出协议(如HTTP、HTTPS)、域名、端口号(默认HTTP为80,HTTPS为443)和路径等信息。
缓存检查:在发送网络请求前,浏览器会检查本地缓存(包括浏览器缓存、系统缓存、ISP缓存等)中是否已有对应资源的副本。如果找到且未过期,则直接从缓存中加载资源,以节省时间和带宽。
2. DNS域名解析
如果本地缓存中没有找到所需资源,浏览器会进行DNS查询,以获取域名对应的IP地址。DNS查询通常涉及递归查询过程,通过多个DNS服务器最终找到目标IP地址。
3. 建立TCP连接(HTTPS还需TLS握手)
浏览器使用TCP协议与服务器建立连接,以便传输数据。对于HTTPS协议,还需要进行TLS握手过程,以确保数据传输的安全性。
4. 发送HTTP请求
浏览器构建HTTP请求报文,并通过TCP连接发送给服务器。请求报文包括请求行、请求头和请求正文(如有)。
5. 服务器处理请求并返回响应
服务器接收请求后,根据请求的内容进行相应的处理(如查询数据库、执行脚本等),并构建HTTP响应报文返回给浏览器。响应报文包括状态码、响应头和响应体。
6. 浏览器解析响应内容
浏览器接收到响应后,开始解析响应内容,主要包括HTML文档的解析和CSS、JavaScript等资源的加载与解析。
构建DOM树:浏览器将HTML文档中的标签转换为DOM(文档对象模型)节点,构建成DOM树。DOM树是页面结构的内存表示,用于后续的渲染和交互。
构建渲染树:浏览器根据CSS样式信息和DOM树构建渲染树(Render Tree)。渲染树只包含需要显示的节点和样式信息,用于指导页面的布局和绘制。
CSS解析:浏览器解析CSS文件或样式元素中的样式规则,并计算每个元素的最终样式。这些样式信息将用于构建渲染树。
JavaScript解析:JavaScript脚本通常在DOM树构建完成后执行,用于修改DOM树或实现页面的交互功能。JavaScript的执行可能会阻塞DOM树的构建和渲染树的渲染。
7. 布局与绘制
布局(Reflow/Relayout):浏览器根据渲染树中的节点信息和样式信息计算每个节点的几何位置和大小,确定它们在页面上的布局。
绘制(Repaint):浏览器遍历渲染树,使用UI后端层将每个节点绘制到屏幕上。绘制过程包括填充颜色、绘制边框、文本等。
8. 渲染完成
当所有资源都加载完成且页面布局和绘制都完成后,用户就可以在浏览器中看到完整的网页了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值