毕业实习-4

一、pikachu(XSS)

1.1反射型XSS

1.1.1 反射型XSS(Get)

直接注入:

<script>alert('1')</script>

发现前端对输入的长度有限制,需要修改,解决方法如下:

修改前端网页代码
看到对应的input标签maxlength是20:

在这里插入图片描述

修改为200后, 可以输入完整的长度:

在这里插入图片描述

弹窗成功:

在这里插入图片描述

抓包查看(成功查看到弹窗)

在这里插入图片描述

在这里插入图片描述

1.1.2 反射型XSS(Post)

首先网站为了更好理解利用xss盗取用户的cookie, 模拟了一个用户登录的过程:

在这里插入图片描述

登录成功后, 就和Get型一样的界面了:

在这里插入图片描述

虽然界面是一样的, 但是请求方式不一样, 用户先经过POST请求登录, 然后再在当前界面用GET来提交信息:

在这里插入图片描述

所以可以直接注入:

弹窗成功:

在这里插入图片描述

抓包查看(成功查看到弹窗)

在这里插入图片描述

1.1.3 分析

有的人会问, 这两关有什么区别吗?

当然有区别, 在xss GET方式中, 攻击者可以直接伪造一个已经构造好的攻击网址,
来诱使用户点击, 盗取用户的cookie

有的人还问, 这么明显的攻击网址, 没人会点。

是的, 的确看到的人都不会点, 但是攻击者会去缩短、包装攻击这个网址。

那么, 在POST方式的xss中, 与GET不同的是:

  1. GET方式中, 攻击代码是直接暴露在URL中的

  2. POST方式参数内容不会出现在URL中

因为在POST方式中, 就算将构造好(含攻击代码)的URL给用户点击了, 也不会直接触发拿到cookie, 反而会直接弹出用户登录提示。

这时候我们就得用一个服务器(攻击者的), 伪造POST请求去登录, 并且盗取用户登录成功后的cookie

1.2 存储型XSS

发现它是一个留言板
在这里插入图片描述

所以可以直接注入:<script>alert("交出你的cookie");alert(document.cookie)</script>

提交之后首先弹出下图,对应payload中的 alert(“交出你的cookie”)

在这里插入图片描述

点 确定 之后又弹出下图,对应payload中的 alert(document.cookie)

在这里插入图片描述

点 确定 之后就变成下图这样了,虽然留言内容显示不出来,但是对比一开始进来的时候可以看到多了个“删除”,说明确实多了一条留言

在这里插入图片描述

下面就是见识存储型XSS威力的时候了:

在另外一个浏览器中来到本关页面,也出现了同样的弹框。说明存储型XSS能危害所有访问受影响页面的用户。

在这里插入图片描述

1.3 特点与区别

反射型、存储型和DOM型XSS(跨站脚本攻击)是三种不同类型的XSS攻击。它们的主要特点和区别如下:

1.3.1 反射型XSS(Reflected XSS)
  • 特点
    • 攻击者将恶意脚本嵌入到请求中(如URL参数),并通过诱使用户点击链接来触发这一请求。
    • 脚本通常是在HTTP响应中即时返回的,并不在服务器上持久存储。
    • 攻击目标通常是单次会话,脚本在请求周期结束后不再有效。
1.3.2 存储型XSS(Stored XSS)
  • 特点
    • 攻击者将恶意脚本存储在服务器的数据库、论坛帖子、评论中等持久存储的位置。
    • 当其他用户访问这些存储的数据时,脚本会被提取并执行。
    • 这种攻击方式对受害者的影响长期存在,可能影响多个用户。
1.3.3 DOM型XSS(DOM-based XSS)
  • 特点
    • 攻击发生在客户端,主要利用JavaScript的功能。
    • 攻击者通过操控DOM(文档对象模型)来执行恶意代码,而不依赖于服务器的响应。
    • 常见于客户端应用程序,恶意脚本的执行依赖于现代浏览器和JavaScript的执行上下文。
1.3.4 区别总结:
  • 存储位置

    • 反射型XSS:不持久存储,恶意代码在请求即刻执行。
    • 存储型XSS:持久存储在服务器上,影响多次用户访问。
    • DOM型XSS:发生在客户端,通过对DOM的操作实现攻击。
  • 攻击手段

    • 反射型XSS:依赖用户点击恶意链接。
    • 存储型XSS:恶意内容存储在服务器上由后续请求触发。
    • DOM型XSS:通过客户端代码直接操控DOM对象。

二、XSS 的fuzz字典

Fuzz 字典:
https://github.com/TheKingOfDuck/fuzzDicts

参考文章:fuzz字典参考

三、XSS挑战靶场打靶

在这里插入图片描述

3.1 level 1

首先,点击图片开始第一关

在这里插入图片描述

我们可以看到当前页面没有用户输入点

查看代码(友情提示:F12/鼠标右键)

在这里插入图片描述

发现可以在地址栏中更改用户的名字

输入<script>alert(/xss/)</script>

在这里插入图片描述

3.2 level 2

点击确定进入第二关

在这里插入图片描述

发现多了一个文本框和按钮,查看代码

在这里插入图片描述

尝试修改文本框内容,发现

在这里插入图片描述

三处同时变化

利用input标签的value值

采用<script>标签绕过

注意:需要构造闭合

"><script>alert(/xss/)</script><input name="

在这里插入图片描述

3.3 level 3

来到第三关

在这里插入图片描述

第三关和第二关一样有一个文本框和一个按钮

查看代码

在这里插入图片描述

按照第二关的第一种方法尝试,发现无法解析<>和””
在这里插入图片描述
在这里插入图片描述

那就要换种绕过方法:

构造事件onmouseout,并且把" "改为’ ':' onmouseover='alert(/xss/)

发现是可执行的

在这里插入图片描述

3.4 level 4

来到第四关

在这里插入图片描述

按例查看代码,尝试"> <script>alert(/xss/)</script><input="

<>仍被实体化

在这里插入图片描述

onmouseout可以

" οnmοuseοut="alert(/xss/)

在这里插入图片描述

3.5 level 5

来到第五关啦

在这里插入图片描述
首先,我们还是尝试使用<script></script>

出错了

在这里插入图片描述

查看源代码发现: scr和ipt中间有了个下划线,对script进行了过滤

在这里插入图片描述

采用上一关的方法" οnclick="alert(/xss/) 发现 on也被过滤了

在这里插入图片描述

使用一种新方法

<a>标签:超链接

"><a href="javascript:alert(/xss/)">

在这里插入图片描述

3.6 level 6

在这里插入图片描述

使用上一关的方法调用<a>

没有出现超链接

我们查看源代码一下

在这里插入图片描述

hr和ef中间出现下划线,尝试切换大小写绕过

"><a Href="javascript:alert(/xss/)">6<"

出现超链接了,点击成功

在这里插入图片描述

3.7 level7

进行<script></script>尝试,被过滤掉了

在这里插入图片描述

onclick尝试,on无法显示

在这里插入图片描述

怎么办呢?

尝试一下复写:" oonnclick="alert(/xss/)

发现成功

在这里插入图片描述

3.8 level 8

在这里插入图片描述
发现比之前的关卡多了一个链接

查看代码看看

在这里插入图片描述

试试<script></script>标签,果然一如既往的不行。

输入javascript:alert(/xss/)发现

在这里插入图片描述

r和i之间有了个空格,但其实那是个制表符

有两个方法

方法:在url里面javascript字母中加入url编码的制表符:%09

在这里插入图片描述

成功啦!

在这里插入图片描述

3.9 level 9

在这里插入图片描述

尝试上一关的方法

javascript:alert(/xss/)

没有问题但是依旧无法跳转

在这里插入图片描述

查看源码中具有该代码:strpos($str7,'http://')),意味着会检查我们的内容中是否有http://,所以我们可以借助/**/去绕过http://的检测,只需要在我们的恶意代码之后用注释包裹http://即可。同时因为题目把script过滤了,所以需要对script进行ASCII HEX编码。

javascrip&#x74;:alert(/xss/)/*http://*/

在这里插入图片描述

3.10 level 10

在这里插入图片描述

通过F12我们可以发现该页面具有隐藏的input属性:

在这里插入图片描述

所以可以通过url来传参的方式看看我们能否给这些隐藏的属性赋值:

在这里插入图片描述

发现t_sort是可以赋值的,所以我们可以控制t_sort的value:

在这里插入图片描述

但是我们现在无法把触发这个onmouseover事件函数,因为input标签被hidden属性隐藏了,所以我们需要 重新设置type,在原来的语句上加上"type=“text”:http://localhost/xsschallenge/level10.php?t_sort="onmouseover="alert(/xss/)"type="text"

在这里插入图片描述

搞定!

四、总结浏览器解析机制

浏览器解析机制主要包括以下几个核心步骤:

  1. 获取资源:浏览器通过HTTP/HTTPS协议从服务器获取HTML文档和其他资源(如CSS、JavaScript、图片等)。

  2. 构建DOM树:浏览器解析HTML文档,创建一个称为文档对象模型(DOM)的树形结构。每个HTML标签都会对应一个DOM节点。

  3. 构建CSSOM树:浏览器解析CSS样式,创建一个CSS对象模型(CSSOM)树。这个过程涉及到对CSS规则的解析和层叠计算。

  4. 渲染树构建:结合DOM树和CSSOM树,浏览器构建渲染树。渲染树只包含可见的节点,并计算出每个节点的布局信息。

  5. 布局:对渲染树中的元素进行布局计算,确定每个元素在屏幕上的位置和尺寸。

  6. 绘制:浏览器根据布局信息,将渲染树中的内容绘制到屏幕上。这一步骤涉及到将像素信息绘制到位图中。

  7. 合成:在复杂的页面中,浏览器可能会将不同的层合成到一起,以提高性能,最终展示给用户。

整个解析过程是实时进行的,浏览器会根据用户的交互和动态内容的变化不断更新DOM和渲染结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值