实训day4

任务一:总结反射型、存储型、DOM型XSS特点和区别

一、反射型:

1.特点:

即时性:攻击载荷(payload)通过URL参数、表单字段或HTTP头等方式传送到受害者的浏览器,并立即执行。

依赖用户交互:需要用户点击一个含有恶意脚本的链接才能触发攻击。

非持久性:恶意脚本不会存储在目标服务器上,攻击载荷仅在受害者点击链接的单个请求/响应过程中存在。

2.区别:

存储位置:恶意脚本不存储在服务器上,而是动态生成并反射回用户浏览器。

影响范围:通常只影响点击恶意链接的用户。

攻击方式:通过社交工程手段诱骗用户点击特定链接。

二、存储型xss:

1.特点:

持久性:攻击载荷被永久存储在目标服务器的数据库或文件中,如留言板、评论区等。

广泛影响:一旦恶意脚本被存储,任何访问该页面的用户都可能受到影响。

隐蔽性:由于脚本存储在服务器上,攻击者可能不需要直接与用户交互即可实施攻击。

2.区别:

存储位置:恶意脚本永久存储在服务器上。

影响范围:广泛,可能影响所有访问受影响页面的用户。

攻击方式:攻击者将恶意脚本注入到网站的存储区域,等待用户访问。

三、DOM型xss特点:

1.特点:

客户端执行:恶意脚本通过客户端的JavaScript操作DOM(文档对象模型)动态生成和执行,不依赖于服务器响应。

隐蔽性高:由于攻击发生在客户端,服务器日志可能不记录任何异常,使得检测和追踪更加困难。

动态内容相关:攻击通常与网页的动态生成内容有关,如通过URL参数、JavaScript生成的内容等。

2.区别:

执行位置:恶意脚本在客户端执行,不通过服务器。

输入验证:防护重点在于客户端JavaScript的输入验证和安全的DOM操作。

触发方式:通过修改页面的DOM结构来植入恶意代码,可能通过URL参数、事件触发等方式实现。

任务二:上网搜索一份XSS的fuzz字典或字典生成工具

打开网站:

https://gitcode.com/gh_mirrors/up/upload-fuzz-dic-builder/overview?utm_source=csdn_github_accelerator&isLogin=1,下载upload-fuzz-dic-builder-master.zip,解压可得到多种fuzz字典

任务三:到XSS挑战靶场打靶(https://xss.tesla-space.com/)

进入靶场:

第一关

观察到url的参数里有name项,根据XSS原理,注入恶意脚本,尝试注入payload

插入“?name=<script>alert()</script>”

注入后显示成功

第二关

首先尝试和第一关一样的方法,考虑注入payload。没能成功。

在输入框处点击右键选择,查看网站源码,这里可以以看到input一个value值,这样表示此处不会执行注入语句的,在这里我们需要构造标签闭合来破解

已知输入的内容会直接被引号框住,所以我们可以尝试将引号给消除掉,添加"><script>alert()</script><"

第三关

尝试像第二关一样绕过,失败

观察到有函数onfocus,用于输入框input,这里键入payload如下

'οnfοcus='alert(1)

第四关

同第三关做法一致 改为" οnclick="alert(1)

第五关

输入"> <a href=javascript:alert()>xxx</a> <"后点击xxx

任务四:

一、浏览器解析机制:

第一步:HTTP请求:当用户在地址栏输入URL并点击回车,浏览器发送一个HTTP请求到服务器,获取HTML文档。

第二步:接收到响应:服务器返回HTTP响应,通常包含HTML、CSS和JavaScript等文件的内容。

第三步:解析HTML:浏览器开始解析HTML文档,从头部开始,遇到标签开始读取内容,将html的标签转换为DOM将结构转换成一棵节点树,每个元素都有相应的属性和事件处理程序。

第四步:CSS渲染:浏览器解析CSS规则,并应用到DOM元素上,调整样式和布局,形成渲染层。CSS文件解析完成后,CSS规则都保存在了CSSRuleList实例中,这些规则会在创建Render节点的过程中使用到。

第五步:解析脚本:遇到标签内的JavaScript,浏览器会按顺序执行它们,可能影响页面内容和交互。解析完成后,浏览器引擎会通过DOMTree和CSSRuleTree来构造RenderTree

第六步:渲染完成:所有的HTML、CSS和JavaScript都被解析执行后,浏览器最终渲染出完整可视的网页。

二、解释《漏洞利用之XSS注入》

1.

不执行的原因主要是URL的协议部分(javascript:)被编码了。浏览器在解析这个URL时,无法正确识别其协议,因此不会执行其后的JavaScript代码。不执行的原因主要是URL的协议部分(javascript:)被编码了。浏览器在解析这个URL时,无法正确识别其协议,因此不会执行其后的JavaScript代码。

2.

当浏览器遇到这个<a>标签时,它会尝试解析href属性中的URL。然而,由于:字符被编码为%3a,浏览器无法识别出这是一个javascript:伪协议。因此,它不会执行该URL中的JavaScript代码。

3.

字符实体转换回它们代表的字符,得到的JavaScript代码是alert(9),试图通过字符实体编码来隐藏其JavaScript本质,,但是因为大多数现代浏览器都有内置的XSS防护机制,可以防止这类通过字符实体编码的脚本执行。

4.

使用了Unicode转义序列来编码JavaScript代码,实际表示的代码是alert(10),这段JavaScript代码将会执行,并显示一个包含数字10的警告框。

5.

这段代码被浏览器解析并执行时,JavaScript引擎会将\u000a转换为实际的换行符。因此,alert函数将会显示一个包含数字14和一个换行符的字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值