重邮信安集中实习第四天

目录

一、反射型、存储型、DOM型XSS特点和区别

1、反射型XSS的特点:

2、存储型XSS的特点:

3、DOM型XSS的特点:

4、三种XSS之间的区别:

二、XSS的fuzz字典或字典生成工具

Xss-Sql-Fuzz:

Fuzz Dict:

Upload-Fuzz-Dic-Builder:

三、XSS挑战打靶

第一关

第二关

第三关

第四关

第五关

四、浏览器解析机制的总结


一、反射型、存储型、DOM型XSS特点和区别

1、反射型XSS的特点:

       ①临时性:这种类型的 XSS 攻击是临时性的,一旦用户离开页面,攻击代码就不会继续存在。

        ②用户触发:通常通过用户点击恶意链接或提交恶意数据到网站,网站在未经充分验证的情况下将这些数据反射回用户浏览器,导致攻击发生。

        ③不持久化:恶意脚本不是永久存储在服务器上的,而是通过用户的交互行为临时注入到页面中。

2、存储型XSS的特点:

        ①持久性:这种类型的 XSS 攻击是持久性的,恶意脚本会被存储在服务器端,每次用户加载受影响的页面时都会执行恶意脚本。

        ②服务器存储:恶意脚本被存储在服务器数据库中,例如论坛帖子、评论等。

        ③广泛传播:由于存储型 XSS 的持久性,它可以在多个用户之间传播,影响范围更广。

3、DOM型XSS的特点:

        ①客户端处理:这种类型的 XSS 攻击发生在客户端(浏览器),通常是因为客户端 JavaScript 代码对用户提交的数据处理不当而导致。

        ②动态生成:恶意脚本不是由服务器直接返回的,而是通过客户端 JavaScript 动态生成的。

        ③不涉及服务器:虽然数据可能来自于服务器,但实际的恶意脚本是在客户端通过 JavaScript 处理数据时产生的。

4、三种XSS之间的区别:

①反射型 XSS

        临时性,通过用户交互触发。恶意脚本不是存储在服务器上,而是通过用户的交互行为反射到页面中。

②存储型 XSS

        持久性,恶意脚本存储在服务器上。影响范围更广,每次用户加载受影响的页面时都会执行恶意脚本。

③DOM 型 XSS

        发生在客户端,通过客户端 JavaScript 处理数据时产生。恶意脚本不是由服务器直接返回的,而是通过客户端 JavaScript 动态生成的。

二、XSS的fuzz字典或字典生成工具

Xss-Sql-Fuzz

        Xss-Sql-Fuzz包含了预定义的XSS攻击payload,覆盖了反射型、存储型和DOM型XSS的各种情形。该工具不仅可以用于XSS检测,还可以检测SQL注入等其他类型的漏洞。

下载地址:jiangsir404/Xss-Sql-Fuzz

Fuzz Dict

        Fuzz Dict是一个开源项目,用于生成模糊测试(Fuzz Testing)的自定义字典,可以帮助开发者进行XSS等类型的漏洞测试。

下载地址:TuuuNya/fuzz_dict

Upload-Fuzz-Dic-Builder

        Upload-Fuzz-Dic-Builder是一个文件上传漏洞fuzz字典生成脚本小工具,虽然主要针对文件上传漏洞,但也可以用于生成XSS测试相关的payload。

下载地址:c0ny1/upload-fuzz-dic-builder

三、XSS挑战打靶

靶场链接https://xss.tesla-space.com/

第一关

        源代码分析如下:

        将URL修改为“https://xss.tesla-space.com/level1.php?name=<script>alert()</script>”

第二关

        查看源代码:

        然后,添加“<script>alert()</script>”,发现:

        由上图可知,输入的句子会直接被引号框住,因此可以尝试将引号给“消掉”,使用URL“

https://xss.tesla-space.com/level2.php?keyword="> <script>alert()</script> <"    ”来构造:

第三关

        首先,随机输入密码(这里输入的是1234),并查看源码:

        接着,尝试使用第二关的方法进行绕过:

        此时,发现无法绕过。接下来,尝试onfocus事件绕过,即添加 ' οnfοcus='alert() '。构造URL“ https://xss.tesla-space.com/level3.php?keyword=' οnfοcus='alert() ' ”,再点击搜索栏:

第四关

        来到第四关,下面是代码分析: 

        此时,尝试使用第三关类似的onfocus事件绕过,即添加 " οnfοcus='alert() "。构造URL“ https://xss.tesla-space.com/level4.php" οnfοcus='alert() " ”,再点击搜索栏:

第五关

        来到第五关,同样先分析第五关源代码:

        这里,同样尝试使用第四关的方法:

        发现无法行通。下面,尝试a href属性,即添加“  "> <a href=javascript:alert()>xxx</a> <"  ”。构造“  https://xss.tesla-space.com/level6.php?keyword="> <a href=javascript:alert()>xxx</a> <"  ”

        点击标签“XXX”,即可触发事件:

四、浏览器解析机制的总结

浏览器的解析分为以下几个过程:

①加载过程:

        当用户在浏览器中输入URL后,浏览器首先会发起DNS查询以获取目标服务器的IP地址。

浏览器通过TCP/IP协议建立连接,并发送HTTP请求给服务器。服务器响应请求,返回HTML文档。

②解析HTML:

        浏览器开始接收HTML文件,并几乎立即开始解析它,构建DOM树(Document Object Model)。浏览器遇到<link>标签引用外部CSS文件或者<script>标签引用外部JavaScript文件时,会发起额外的网络请求来获取这些资源。

③加载CSS:

        CSS文件被加载后,浏览器解析它们以生成CSSOM(CSS Object Model)。浏览器将DOM树与CSSOM合并,创建一个渲染树(Render Tree),其中包含了页面上每个可见元素的样式信息。

④执行JavaScript:

        JavaScript代码可以修改DOM树和CSSOM,因此JavaScript的执行可能会影响渲染树的构造。脚本可以是内联的,也可以是外部文件的形式;浏览器会暂停HTML解析来执行脚本,这可能导致阻塞渲染。

⑤布局和绘制:

        渲染树构建完成后,浏览器进行布局阶段(Layout),确定每个元素在页面上的位置和大小。接着是绘制阶段(Painting),浏览器把每个可见元素绘制到屏幕上。

⑥交互:

        页面完全加载后,用户可以与页面进行交互,如点击按钮、填写表单等。这些操作可能会触发JavaScript事件处理器,从而改变DOM树,重新渲染页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奥他

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值