首页 > 其他分享 >xss-基于Pikachu的学习

xss-基于Pikachu的学习

时间:2024-05-01 20:00:21浏览次数:27  
标签:xss 基于 XSS Pikachu alert 代码 Xss 页面

XSS漏洞-跨站脚本攻击

XSS的原理

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

XSS的分类

  1. 反射型:非持久化,且需要使用钓鱼等手段欺骗用户点击恶意链接才能触发恶意代码。一般反射型 XSS 会出现在搜索页面,且大多数是用来获取用户的 cookie 信息的。虽然影响范围最大的是存储型的 XSS,但是现在针对存储型 XSS 的防御非常完备,所以在利用上,反射型的利用率还是比存储型高些。
攻击流程:
1. 攻击者发送带有XSS恶意的脚本链接给客户(该链接是正常服务器存在注入点的链接,且带着我们注入的内容)
2. 客户点击了恶意链接并访问了正常服务器
3. 服务器将XSS与页面信息返回客户端
4. 客户端解析后请求恶意服务器
5. 攻击者读取用户信息
img
  1. 存储型:存储型的 XSS,最大的特点是可持久化,因为在过滤条件差的情况下,存储型的 XSS 的恶意代码会直接被保存在服务器端的数据库中。而这个恶意代码被服务器读出输出到用户端的Web页面时,恶意代码会执行,从而达到攻击的目的。可以说存储型 XSS 是影响范围最大的 XSS。通常出现在评论、文章发表等可由用户输入,并随着服务器读出的地方,容易造成蠕虫,盗窃cookie等严重影响。

    攻击流程:
    1. 攻击者在正常服务器中注入XSS代码,且被服务器储存在了数据库中
    2. 用户在网站登录状态下,访问了恶意服务器,且浏览了存在恶意脚本的页面
    3. 正常服务器将页面信息与XSS脚本一同返回
    4. 客户端解析了页面信息与XSS脚本代码,这时脚本代码会被执行,甚至会向攻击者的恶意服务器主动发起请求
    5. 此时,攻击者就可以从自己的恶意服务器中读取用户数据
    
    img
  2. DOM型:DOM 型的 XSS 注入与反射型原理类似,只不过 DOM 型的 XSS 注入不需要经过后端代码处理,而是在前端 JavaScript 调用 DOM 元素时可能产生的漏洞,可能触发 DOM 型 XSS 的 JavaScript 代码:

    document.referer    返回跳转或打开到当前页面的页面的URI
    window.name         可设置或返回存放窗口的名称的一个字符串
    location            可以设置窗口跳转或者返回当前窗口的地址
    innerHTML           内嵌HTML代码
    documen.write       页面内写入字符
    

常见的html标签以及过滤

XSS过滤绕过总结 - 随风kali - 博客园 (cnblogs.com)

CTF-赛题

Pikachu Xss 反射型(GET)

本想直接输入弹窗代码,让他弹窗的,发现长度有了限制,然后就看看是不是前端有限制。同时抓包也发现自己所写的东西被直接嵌入在html的代码当中。

<script>alert(1)</script>

image-20240501095924950

image-20240501100158953

F12审查元素,发现的确是前端限制了输入的长度,我们可以进行更改为长度100,然后再插入代码

image-20240501100333062

成功了,成功弹窗 1

image-20240501100510299

Pikachu Xss 反射型(POST)

这一题就是先登录,登录可以参考暴力破解登录,登录后就是一个注入点,可以直接尝试注入

<script>alert(document.cookie)</script>

然后就得到了这个admin用户的cookie值

image-20240501101015418

Pikachu Xss 存储型

这一题打开就是一个留言框,由前置知识了解到,这些留言板可以当作存储型Xss注入的注入点,我们可以写下恶意代码,当其他用户访问这个留言板,我们的恶意代码会直接触发。

image-20240501101329911

接下来我插入代码:

<script>alert(document.cookie)</script>

接下来我们刷新网站看看会发生怎么个事

image-20240501101449994

我们的cookie信息被触发了,这就是存储型的Xss

Pikachu Xss DOM型

首先让他弹窗一下吧,我先试试,发现不行,回显what do you see?

<script>alert(1)</script>

image-20240501101812132

DOM类型了解到主要是js代码,所以我们cirl + u 查看源码,搜索what do you see,快速定位

image-20240501103053103

里面有一些提示,payload也是直接告诉我们了,所以我们需要去分析这一串代码

他是将我们输入的字符串,拼接在a标签前面,最后输出what do you see

我输入的payload是将a标签闭合,然后用img标签去触发xss

'><img src=1 one rror=alert("xss");>

完整的回显如下:

<a href=''><img src=1 one rror=alert("xss");>'what do you see?</a>

Pikachu Xss DOM型(xss-x)

首先输入代码:

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

回显是一个超链接

image-20240501130857759

点击emo语句之后,就出现了释怀语句

image-20240501130928292

因为是DOM型,我们就用这个释怀语句,去源代码处搜索一下,到底怎么个事儿。

果然发现了js代码,代码逻辑就是点击了emo语句后,他会执行我们输入的字符串和emo语句的拼接,这时候就是闭合语句,执行xss注入。

image-20240501131140319

我们注入的payload如下:

' onclick="alert('hhhhhhhhh')">

注意这里alert是由双引号包裹,而alert里面的内容则是单引号,这俩得不一样,我也不太清楚为什么

image-20240501131814722

Pikachu Xss (过滤)

这道题试了试,被过滤了,然后参考html的标签,过滤的各种绕过

paylaod:

<details open ontoggle="alert('xss');">
<input onfocus="alert('xss');">
<img src=1 one rror=alert("xss");>
<svg onl oad=alert("xss");>
<select onfocus=alert('xss') autofocus>
<iframe onl oad=alert("xss");></iframe>
<video><source one rror="alert('xss')">

image-20240501133005628

Pikachu Xss (htmlspecialchars)

输入 payload尝试一下:

'><img src=1 one rror=alert("xss");>

image-20240501153257643

回显是一个超链接,那我们就打开源码进行查看,搜记录这个关键词

image-20240501153451733

打开后就是看不懂的一堆代码,开始去搜htmlspecialchars这个函数方法

image-20240501153553286

很符合这个题目,并且发现了单引号并没有过滤。所有就有了下面的payload

' onclick='alert(1)’

image-20240501154207627

但是接下来我又尝试了如下的:

' onclick='alert("xss")

也是成功了,我也是有点晕,这个双引号怎么就可以用了,也是不太懂。

Pikachu Xss (href输出)

'><img src=1 one rror=alert("xss");>

还是老套路代入,发现一个超链接,开始源代码搜索;

image-20240501155424049

发现都被过滤掉了,这道题的提示如下:

image-20240501155720942

这里补充一点儿java的伪协议的知识

java伪协议

"javascript:" 协议是一种能够在 URL 中嵌入 JavaScript 代码并运行的协议。当浏览器遇到一个包含 "javascript:" 的 URL 时,它会将后面的代码提取出来并在当前页面环境中执行。这就意味着我们可以通过 URL 来调用 JavaScript 函数或者执行一些 JavaScript 代码块。

将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。

接下来回到题目,让我们用伪协议的方式去尝试一下xss的注入

javascript:alert("xss")

image-20240501160140607

Pikachu Xss (js输出)

我输入了一个:

haha

然后查看源代码,发现自己输入的被代入到js代码当中

image-20240501181544801

我们的输入的内容被直接当作变量

我们可以将其闭合,然后注释掉后面,所以payload:

';alert('xss');//

image-20240501182330503

成功注入。

标签:xss,基于,XSS,Pikachu,alert,代码,Xss,页面
From: https://www.cnblogs.com/Muneyoshi/p/18169590

相关文章

  • 基于Hyperf的CMS,企业官网通用php-swoole后台管理系统
    2023年9月11日10:47:00仓库地址:https://gitee.com/open-php/zx-hyperf-cmsCMS,企业官网通用PHP后台管理系统框架介绍hyperfSCUI后端开发组件php8.1hyperf3.1数据库sql(使用最新日期文件)hyperf\doc\sql_bakmysql8.系统默认账号密码:admin/admin前端开发组件scui......
  • C++基于范围的for循环优劣
    C++的范围基for循环是对这些更传统循环方式的一种抽象,使得代码更简洁,更容易阅读和维护,同时减少了出错的机会,特别是在涉及复杂数据结构时。如我某个工程中的一个代码段:QDateTimetime=QDateTime::currentDateTime();for(constQPair<QString,QDateTime>&record:me......
  • C#的基于.net framework的Dll模块编程(五) - 编程手把手系列文章
          这次继续这个系列的介绍: 一、使用DLL类库的方法;1)静态类;先引用该类库,然后声明命名空间,然后就能够进行使用了。   2)动态类;先引用该类库,然后声明命名空间,然后能够进行使用了。  3)窗体;只能在Winf......
  • 基于SSM的校园论坛网站系统毕业设计论文【范文】
    摘要随着信息技术的不断进步与深入应用,校园论坛系统作为高校师生信息交流、知识共享和意见交换的重要网络平台,其作用日益凸显。基于此背景,本毕业设计论文旨在开发一个基于SSM(Spring+SpringMVC+MyBatis)框架的校园论坛系统,以提供高效、稳定且易于维护的交流环境。在系统设计......
  • [python] 基于PyWaffle库绘制华夫饼图
    华夫饼图Wafflechart是一种独特而直观的图表,用于表示分类数据。它采用网格状排列的等大小方格或矩形,每个方格或矩形分配不同的颜色或阴影来表示不同的类别。这种可视化方法有效地传达了每个类别在整个数据集中的相对比例。本文介绍如何使用基于Python的PyWaffle库绘制华夫饼图。P......
  • 基于DCT变换的彩色图像双重水印嵌入和提取算法matlab仿真
    1.算法运行效果图预览灰度图   彩色图   2.算法运行软件版本matlab2022a  3.算法理论概述      双重水印嵌入算法涉及两个独立的水印:主水印和辅水印,它们可以是灰度图像、二进制序列或其他形式的数据。以下简述嵌入过程: 图像预处理:将彩色图像从R......
  • 基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览   2.算法运行软件版本VIVADO2019.2 matlab2022a 3.算法理论概述      图像阈值计算和分割是图像处理领域的一项重要任务,它通过设定一个阈值将图像从灰度空间转化为二值空间,从而实现对图像区域的有效划分。基于直方图的阈值选取方......
  • m基于Yolov2深度学习网络的智能零售柜商品识别系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要       YOLO(YouOnlyLookOnce)是一种实时的目标检测算法,YOLOv2则是其改进版本,由JosephRedmon和AliFarhadi于2016年提出。YOLOv2采用了端到端的方式直接从整幅图像预测边界框和类别概率,极大......
  • 基于electron-store的最佳实践封装工具类
    基于之前讨论的electron-store最佳实践,以下是一个更加完善和健壮的封装示例,包含了类型处理、默认值设定、以及一些实用方法,以适应更复杂的场景://storeUtil.jsconstStore=require('electron-store');constapp=require('electron').app;classStoreUtil{constructor......
  • [Python急救站]基于Transformer Models模型完成GPT2的学生AIGC学习训练模型
    为了AIGC的学习,我做了一个基于TransformerModels模型完成GPT2的学生AIGC学习训练模型,指在训练模型中学习编程AI。在编程之前需要准备一些文件:首先,先win+R打开运行框,输入:PowerShell后输入:pipinstall-Uhuggingface_hub下载完成后,指定我们的环境变量:$env:HF_ENDPOINT="ht......