xss4之cookie操作
一、登录网站情况分析
1. 登录状态与Cookie的关系
- 已登录状态: 当用户登录网站后,如admin123456,网站会通过某种方式(如Cookie)在客户端保存用户的登录状态。
- Cookie的作用: Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。在这里,Cookie用于标记用户的登录状态,使服务器能够识别出已登录的用户。
- Session ID: 在已登录状态下,服务器会为用户分配一个唯一的Session ID,并通过Cookie将其发送到客户端。这个Session ID在客户端和服务器之间用于标识用户的会话。
- 服务端标记: 服务端会根据这个Session ID来标记用户的登录状态,从而在用户后续请求时能够识别并处理其已登录的身份。
2. 总结
- 登录状态的实现: 通过Cookie保存Session ID,服务端根据Session ID来识别用户的登录状态。
- Cookie的重要性: Cookie是实现用户登录状态保持的关键技术之一,它使得无状态的HTTP协议能够支持有状态的会话。
二、JavaScript操作Cookie
1. Cookie的浏览器隔离性
- 隔离性: Cookie具有浏览器隔离性,即不同浏览器各自管理自己的Cookie。
- 实例说明: 在火狐浏览器未登录状态下,即使已在其他浏览器登录,火狐浏览器仍显示未登录。
2. 修改SessionID实现登录状态转移
- 操作过程: 通过修改火狐浏览器的SessionID,使其与谷歌浏览器的SessionID一致。
- 结果验证: 修改后刷新页面,火狐浏览器成功显示已登录状态,并显示出用户名。
3. 对代码安全性的质疑与解答
- 质疑: 有学生质疑是否因为代码写得太简单(low)才导致上述结果。
- 解答: 老师明确指出,不是因为代码简单,而是Cookie机制本身的特点导致的结果。
- 操作详情: 通过Cookie Editor修改_utmc等Cookie值,实现跨浏览器登录状态转移。
- 结果展示: 修改SessionID后,火狐浏览器成功登录并显示用户名。
三、浏览器登录情况展示
1. 谷歌浏览器登录情况
- Cookie内容展示: 在谷歌浏览器中,可以看到如“douban.com”的Cookie信息,包括name、value、domain、path等详细字段。
- Cookie编辑功能: 提到了Cookie Editor,表明在谷歌浏览器中可以对Cookie进行编辑操作。
- 安全性相关: 注意到Cookie中有“httpOnly”和“secure”等字段,这与Cookie的安全性设置有关。
2. 火狐浏览器登录情况
- 浏览器类型: 展示了火狐浏览器的界面,说明课程中也涉及到了火狐浏览器的使用。
- Cookie查看: 在火狐浏览器中同样可以查看Cookie信息,但具体界面和操作可能与谷歌浏览器有所不同。
- 重点强调: 老师通过“我们一定要看清楚了啊”这句话,强调了观察浏览器界面和Cookie信息的重要性。
3. 浏览器Cookie的共通性
- 共通性说明: 虽然展示了谷歌和火狐两种浏览器,但Cookie的基本概念和操作方法在大多数浏览器中都是类似的。
- 操作提示: 无论使用哪种浏览器,用户都可以通过相应的工具查看和编辑Cookie信息。
4. 注意事项
- 安全性考虑: 在处理Cookie时,需要注意其安全性,避免泄露敏感信息或遭受恶意攻击。
- 浏览器差异: 不同浏览器的Cookie管理界面和操作可能有所不同,需要根据实际使用的浏览器进行相应操作。
四、火狐浏览器登录情况
1. 谷歌浏览器与火狐浏览器的登录状态对比
- 谷歌浏览器状态: 已提前登录豆瓣网站,账号名为“一台电脑”。
- 火狐浏览器状态: 打开豆瓣网站后显示为未登录状态,因为两个浏览器的cookie值不同。
2. 获取并修改豆瓣的cookie值
- 问题: 火狐浏览器豆瓣显示为未登录,需要获取并修改豆瓣的cookie值。
- cookie数量: 豆瓣网站在浏览器中有17个cookie条目,需要修改这些值以实现登录状态。
- 解决方法: 寻找更方便的方法,而非手动修改每一个cookie值。
五、cookie编辑器插件的使用
1. 安装cookie编辑器插件
- 下载与解压: 由于国内无法直接连接谷歌应用市场,需下载cookie editor的crx扩展文件,并将其后缀名改为.zip后解压。
- 安装步骤:
- 打开谷歌浏览器的扩展程序管理页面(chrome://extensions/)。
- 开启开发者模式。
- 选择“加载已解压的扩展程序”,找到并加载解压后的文件夹。
2. 使用cookie编辑器导出cookie
- 导出操作: 在cookie editor插件中,点击导出(export)按钮,可以一次性导出所有cookie。
- 导出格式: 导出的cookie数据为json格式,这是目前常用的一种数据交换格式。
3. cookie的基本操作
- 获取cookie: 使用JavaScript语法 document.cookie 获取当前页面的cookie。
- 设置cookie: 通过 document.cookie = "username=wuya" 设置新的cookie。
- 修改与删除:
- 修改cookie实际上是通过设置同名的新cookie来覆盖旧cookie。
- 删除cookie则是通过设置同名cookie,并将其过期时间设为过去的时间来实现。
4. 导入cookie到火狐浏览器
- 导入需求: 若需要将导出的cookie数据导入到火狐浏览器,需使用相应的cookie管理工具或插件。
- 导入步骤:
- 在火狐浏览器中找到或安装支持导入json格式cookie的插件(如Cookie-Editor)。
- 使用该插件的导入功能,选择之前导出的json文件进行导入。
六、火狐浏览器插件的使用
1. 安装Cookie Editor插件
- 步骤: 在火狐浏览器的扩展和主题页面,搜索“cookie editor”并安装。
- 注意: 确保安装的是正确版本的Cookie Editor插件,通常会有一个特定的图标或名称来标识。
2. 使用Cookie Editor插件
- 获取Cookie: 在网页上,可以通过JavaScript语法$document.cookie;来获取当前的Cookie。
- 设置Cookie: 通过$document.cookie = "username=wuya";这样的语法来设置新的Cookie。
- 操作示例: 在豆瓣网站上,使用Cookie Editor插件导入新的Cookie值,尝试覆盖原有的Cookie,以验证是否能够直接登录。
- 结果验证: 通过刷新网页,观察是否成功登录,来验证Cookie的修改是否有效。在此示例中,成功登录表明Cookie修改成功。
3. 注意事项
- 安全性: 在实际操作中,要注意Cookie的安全性,避免泄露或滥用他人的Cookie信息。
- 合法性: 获取和使用他人的Cookie必须遵守相关法律法规,不得用于非法目的。
- 插件来源: 确保从官方或可信赖的来源下载和安装插件,以避免安全风险。
七、Cookie的安全问题
1. Cookie的作用与风险
- Cookie作用: 用于在客户端存储用户信息,如登录状态,实现会话管理。
- 风险示例: 如果攻击者获取了他人的Cookie,就可以直接以该用户的身份登录网站,进行非法操作,如转移比特币。
2. 获取Cookie的方法
1)低级方法
- 物理接触: 趁用户不在时,直接访问其电脑获取Cookie。
- 评价: 这种方法低级且受限,被称为“物理黑客”。
2)高级方法
- 远程获取: 通过攻击手段,使用户的电脑主动发送Cookie到攻击者的服务器。
- 技术手段: 需要学习JavaScript等编程技术,利用浏览器的document对象操作Cookie。
3. JavaScript操作Cookie
- 浏览器封装: 浏览器封装了document对象,该对象有一个cookie属性,可以直接用于增删改查Cookie。
- 操作简便: 通过JavaScript,可以轻松实现Cookie的远程获取,为攻击提供便利。
八、JavaScript操作Cookie
1. 获取Cookie
- 方法: 使用document.cookie可以获取当前页面的所有cookie。
- 示例: 在控制台输入document.cookie,即可查看当前页面的所有cookie值。
2. 设置Cookie
- 方法: 通过给document.cookie赋值来设置cookie,格式为key=value。
- 示例: document.cookie = "username=wuya",这样就设置了一个名为username,值为wuya的cookie。
3. 修改Cookie
- 方法: JavaScript没有直接修改cookie的方法,修改cookie实际上是通过覆盖原有cookie来实现的。需要创建一个与原有cookie同名的新cookie,并设置相同的属性(如路径、域等),然后改变其值。
- 注意: 如果只改变值而属性不同,则会创建两个不同的cookie。
4. 删除Cookie
- 方法: 将cookie的过期时间设置为一个早于当前时间的时间点,即可删除cookie。通常设置为过去的一个时间点,如1970年1月1日。
- 示例: document.cookie = "name=wuya;expires=Thu, 01 Jan 1970 00:00:00 GMT",这样就删除了名为name的cookie。
5. 应用案例
- 案例: 通过JavaScript操作cookie,可以实现登录状态的保持与清除、用户偏好设置等功能。
- 示例代码:
- 操作: 通过点击按钮,可以创建和删除cookie,并通过alert(document.cookie)查看当前页面的cookie。
九、JavaScript代码注入与Cookie
1. 代码注入的概念
- 代码注入: 将写好的一段代码注入到别人的网页中,使其在该网页上运行。
- 目的: 获取目标网站的Cookie等信息。
2. 代码注入的前提
- 依托有Cookie的网站: 代码必须在目标网站上运行,才能获取该网站的Cookie。
- 示例: 在豆瓣网页上运行代码才能拿到豆瓣的Cookie,在百度网页上运行代码才能拿到百度的Cookie。
3. Cookie的跨域名限制
- 不能跨域名使用: Cookie是浏览器的一个绝对规范,不能跨域名使用。
- 示例: 打开百度时,浏览器只会查找百度的Cookie,不会查找豆瓣的Cookie。
4. 码注入与SQL注入的类比
- 类似SQL注入: 代码注入与SQL注入有相似之处,都是将构造的语法发送到服务器,然后服务器回响查询的数据。
- 不同点: SQL注入是针对数据库的,而代码注入是针对网页的JavaScript脚本。
- 目的: 将JavaScript脚本注入到网页中并使其运行,以获取Cookie等信息。
十、知识小结
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| Cookie操作基础 | 用JavaScript去操作cookie | - 如何获取cookie <br> - 如何写入cookie <br> - 如何删除cookie | ⭐⭐ |
| Cookie与登录状态 | 服务端通过cookie判断用户登录状态 | - Cookie不能跨浏览器使用 <br> - Cookie不能跨域名使用 | ⭐⭐⭐ |
| Cookie篡改实验 | 通过修改cookie值实现已登录状态 | - 实验步骤:登录网站、获取cookie、在另一浏览器修改cookie值、刷新页面 | ⭐⭐⭐⭐ |
| Cookie编辑器使用 | 使用cookie editor插件导出导入cookie | - 插件安装方法 <br> - 导出cookie为json格式 <br> - 在另一浏览器导入cookie | ⭐⭐⭐⭐ |
| Cookie安全风险 | 通过远程获取用户cookie进行账户操作 | - 远程获取cookie的方法 <br> - Cookie的安全隐患 <br> - 如何防范cookie被篡改或盗用 | ⭐⭐⭐⭐⭐ |
| JavaScript操作Cookie | document对象的cookie属性进行增删改查 | - 读取cookie:document.cookie <br> - 写入cookie:document.cookie = "key=value" <br> - 删除cookie:设置过期时间为过去时间 | ⭐⭐ |
| 跨站脚本攻击(XSS) | 将恶意JavaScript脚本注入到网页中 | - XSS攻击原理 <br> - 如何防范XSS攻击 <br> - XSS与SQL注入的异同点 | ⭐⭐⭐⭐⭐ |
相关文章:
xss4之cookie操作
一、登录网站情况分析 1. 登录状态与Cookie的关系 已登录状态: 当用户登录网站后,如admin123456,网站会通过某种方式(如Cookie)在客户端保存用户的登录状态。Cookie的作用: Cookie是服务器发送到用户浏览器并保存在本地的一小块…...
51c大模型~合集119
我自己的原文哦~ https://blog.51cto.com/whaosoft/13852062 #264页智能体综述 MetaGPT等20家顶尖机构、47位学者参与 近期,大模型智能体(Agent)的相关话题爆火 —— 不论是 Anthropic 抢先 MCP 范式的快速普及,还是 OpenAI …...
Vue3 + TypeScript,关于item[key]的报错处理方法
处理方法1:// ts-ignore 注释忽略报错 处理方法2:item 设置为 any 类型...
【记录】服务器用命令开启端口号
这里记录下如何在服务器上开启适用于外界访问的端口号。 方法 1 使用防火墙 1 su ,命令 输入密码 切换到root节点 2 开启防火墙 systemctl start firewalld3 配置开放端口 firewall-cmd --zonepublic --add-port8282/tcp --permanent4 重启防火墙 firewall-cmd…...
如何优雅地实现全局唯一?深入理解单例模式
如何优雅地实现全局唯一?深入理解单例模式 一、什么是单例模式? 单例模式是一种创建型设计模式,旨在确保一个类只有一个实例,并为该实例提供全局访问点,从而避免全局变量的命名污染,并支持延迟初始化Wiki…...
25.4.20学习总结
如何使用listView组件来做聊天界面 1. 什么是CellFactory? 在JavaFX中,控件(比如ListView、TableView等)用Cell来显示每一条数据。 Cell:代表这个单元格(即每个列表项)中显示的内容和样式。 …...
Spring之我见 - Spring Boot Starter 自动装配原理
欢迎光临小站:致橡树 Spring Boot Starter 的核心设计理念是 约定优于配置,其核心实现基于 自动配置(Auto-Configuration) 和 条件化注册(Conditional Registration)。以下是其生效原理: 约定…...
如何高效利用呼叫中心系统和AI语音机器人
要更好地使用呼叫中心系统和语音机器人,需要结合两者的优势,实现自动化、智能化、高效率的客户服务与业务运营。以下是优化策略和具体实践方法: 一、呼叫中心系统优化 1. 智能路由与IVR优化 智能ACD(自动呼叫分配) …...
【Windows上配置Git环境】
在Windows上配置Git环境可以按照以下步骤进行: 1. 下载Git 打开浏览器,访问Git官方网站https://git-scm.com/downloads。在下载页面中,找到适用于Windows的下载链接,根据你的系统是32位还是64位选择相应的安装包进行下载 。 2.…...
OpenCV基础01-图像文件的读取与保存
介绍: OpenCV是 Open Souce C omputer V sion Library的简称。要使用OpenCV需要安装OpenCV包,使用前需要导入OpenCV模块 安装 命令 pip install opencv-python 导入 模块 import cv2 1. 图像的读取 import cv2 img cv2.imread(path, flag)这里的flag 是可选参数&…...
C 语言的未来:在变革中坚守与前行
C 语言,作为编程语言领域的一位 “老将”,自诞生以来就一直扮演着至关重要的角色。历经数十年的发展,它的影响力依然广泛而深远。在科技飞速发展的今天,新的编程语言如雨后春笋般不断涌现,C 语言的未来发展走向成为了众…...
go语言优雅关机和优雅重启笔记
一、优雅关机 生活化例子 餐馆关门:你去餐馆吃火锅,刚坐下点完菜(客户端发请求),餐馆老板突然接到通知要停电(收到关机指令)。老板很贴心,先停止接待新客人(停止接收新请…...
【算法】计数排序、桶排序、基数排序
算法系列八:非比较排序 一、计数排序 1.实现 1.1步骤 1.2代码 2.性质 2.1稳定性 2.1.1从前往后前始版: 2.1.2从后往前末始版: 2.2复杂度 2.2.1时间复杂度 2.2.2空间复杂度 二、桶排序 1.实现 1.1步骤 1.2代码 2.稳定性 三、…...
Halcon应用:相机标定
提示:若没有查找的算子,可以评论区留言,会尽快更新 Halcon应用:相机标定 前言一、Halcon应用?二、应用实战1、图像理解1.1、开始标定 前言 本篇博文主要用于记录学习Halcon中算子的应用场景,及其使用代码和…...
【C++ 程序设计】实战:C++ 实践练习题(31~40)
目录 31. 数列:s 1 + 2 + 3 + … + n 32. 数列:s 1 - 2 - 3 - … - n 33. 数列:s 1 + 2 - 3 + … - n 34. 数列:s 1 - 2 + 3 - … &#…...
【perf】perf工具的使用生成火焰图
文章目录 1. What is perf?2. perf使用2.1 perf的子工具集2.2 常用指令perf list指令格式参数perf中事件分类使用示例 perf stat指令格式参数 perf top指令格式参数交互式界面操作使用示例 perf record指令格式参数使用示例 perf report指令格式参数交互式界面操作使用示例 pe…...
绿幕抠图直播软件-蓝松抠图插件--使用相机直播,灯光需要怎么打?
使用SONY相机进行绿幕抠图直播时,灯光布置是关键,直接影响抠图效果和直播画质。以下是详细的灯光方案和注意事项: 一、绿幕灯光布置核心原则 均匀照明:绿幕表面光线需均匀,避免阴影和反光(亮度差控制在0.5…...
从外网访问局域网服务器的方法
一、为什么局域网的服务器无法在外网访问? 服务器、电脑之间靠IP地址寻址,目前大部分基于IPV4进行寻址访问。但是因为IPV4的地址数量有限,中国分到的还比较少,所以非常紧缺。 一个解决方案就是在局域网来建立一个内部的网…...
每日面试实录·携程·社招·JAVA
📍面试公司:携程 👜面试岗位:后端开发工程师(社招) 🕐面试时长:约 50 分钟 🔄面试轮次:第 1 轮技术面 ✨面试整体节奏: 这场携程的社招 Java 一面…...
Redis增删改查
### 进入redis控制台 redis-cli --raw #加上raw,防止中文乱码### 增 127.0.0.1:6379> LPUSH list0 "hello" #增加一个list 1 127.0.0.1:6379> LRANGE list0 0 -1 #查看list hello### 删 127.0.0.1:6379> DEL list0 #删除list 1 127.0.0.1:6379> LRANG…...
机器学习 Day12 集成学习简单介绍
1.集成学习概述 1.1. 什么是集成学习 集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它类似于: 超级个体 vs 弱者联盟 单个复杂模型(如9次多项式函数)可能能力过强但容易过拟合 组合多个简单模型(如一堆1次函数)可以增强能力而不易过拟合 集成…...
学习笔记十九——Rust多态
🧩 Rust 多态终极通俗指南 📚 目录导航 多态一句话概念静态分派 vs 动态分派——根本差异参数化多态(泛型) 3.1 函数里的泛型 3.2 结构体里的泛型 3.3 方法里的泛型 3.4 枚举里的泛型Ad hoc 多态(特例多态࿰…...
交换机与路由器的主要区别:深入分析其工作原理与应用场景
在现代网络架构中,交换机和路由器是两种至关重要的设备。它们在网络中扮演着不同的角色,但很多人对它们的工作原理和功能特性并不十分清楚。本文将深入分析交换机与路由器的主要区别,并探讨它们的工作原理和应用场景。 一、基本定义 1. 交换…...
【Oracle专栏】Oracle中的虚拟列
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 在EXP方式导出时,发现 出现如下提示 EXP-00107: virtual column 不支持,因此采用expdp方式导出。于是本文针对oracle虚拟列进行简单介绍。 2. 相…...
2020 年 7 月大学英语四级考试真题(组合卷)——解析版
🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,目前中南大学MBA在读,也考取过HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等证书。🐳 &…...
大语言模型的训练、微调及压缩技术
The rock can talk — not interesting. The rock can read — that’s interesting. (石头能说话,不稀奇。稀奇的是石头能读懂。) ----硅谷知名创业孵化器 YC 的总裁 Gar Tan 目录 1. 什么是大语言模型? 2. 语言建模ÿ…...
NEAT 算法解决 Lunar Lander 问题:从理论到实践
NEAT 算法解决 Lunar Lander 问题:从理论到实践 0. 前言1. 定义环境2. 配置 NEAT3. 解决 Lunar lander 问题小结系列链接0. 前言 在使用 NEAT 解决强化学习问题一节所用的方法只适用于较简单的强化学习 (reinforcement learning, RL) 环境。在更复杂的环境中使用同样的进化解…...
firewall指令
大家好,今天我们继续来了解服务管理,来看看打开或关闭指定端口,那么话不多说,开始吧. 1.打开或者关闭指定端口 在真正的生产环境,往往需要防火墙,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听通讯,这时,需要打开指定的端口,比如80,22,8080等. 2.fi…...
【MySQL】MySQL表的增删改查(CRUD) —— 上篇
目录 MySQL表的增删改查(CRUD) 1. 新增(Create)/插入数据 1.1 单行数据 全列插入 insert into 表名 values(值, 值......); 1.2 单行数据 指定列插入 1.3 多行数据 指定列插入 1.4 关于时间日期(datetime&am…...
STM32的三种启动方式
目录 一、从主闪存存储器启动(Main Flash Memory) 二、从系统存储器启动(System Memory) 三、从内置SRAM启动(Embedded SRAM) 一、从主闪存存储器启动(Main Flash Memory) >&g…...
