XSS—存储型xss

news2024/11/15 23:28:11

xss =>跨站脚本攻击=>前端代码注入=>用户输入的数据会被当做前端代码执行。

原理:使用者提交的XSS代码被存储到服务器上的数据库里或页面或某个上传文件里,导致用户访问页面展示的内容时直接触发xss代码。 输入内容后直接在下方回显,回显的地方就是我们插入的内容的地方。 每当有用户访问包含恶意代码的页面时,就会触发代码的执行,从而达到攻击目的。有别于反射型XSS编写一次代码只能进行一次攻击的特点,存储型XSS的恶意脚本一旦存储到服务器端,就能多次被使用,称之为“持久型XSS”。

存储型XSS比反射型XSS的危害更大,在于它不需要构造特殊的URL,用户访问的是一个正常的URL也可以被攻击;另一方面,它持久化在服务端,影响的范围可以比反射型XSS更广。 

一个重要条件是,web应用中的用户之间有一定的交互,而非各玩各的。比方说,博客、论坛等,这种互相访问的系统才是存储型XSS生长的土壤。其次,在web系统中要找到可以存储到数据库的输入位置,诸如表单、文本框之类的元素,在这些元素中进行正常的操作,让恶意脚本被当成普通输入数据存入数据库。当然,要使用web应用没有过滤的标签、事件,否则输入数据被过滤之后,能够引起XSS的代码就被破坏了。 

 XSS-labs

第二关

打开题目

 看一看源代码

 

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level3.php?writing=wait";
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<h2 align=center>没有找到和test相关的结果.</h2><center>
<form action=level2.php method=GET>
<input name=keyword  value="test">
<input type=submit name=submit value="搜索"/>
</form>
</center><center><img src=level2.png></center>
<h3 align=center>payload的长度:4</h3></body>
</html>

从源码来看,它的功能就是通过点击“搜索”按钮,将输入框内的内容以get方式提交给服务器上的level2.php,经过服务器的动态处理之后又会将参数keyword的值插入到<h2> </h2>标签之中以及添加到<input>标签中的value属性的值内。 

尝试输入<script>alert()</script> 发现没有注入成功

看一下源码

 <!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level3.php?writing=wait";
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<h2 align=center>没有找到和&lt;script&gt;alert()&lt;/script&gt;相关的结果.</h2><center>
<form action=level2.php method=GET>
<input name=keyword  value="<script>alert()</script>">
<input type=submit name=submit value="搜索"/>
</form>
</center><center><img src=level2.png></center>
<h3 align=center>payload的长度:24</h3></body>
</html>

 发现和之前不一样的地方,

<h2 align=center>没有找到和test相关的结果.

</h2><center><h2 align=center>没有找到和&lt;script&gt;alert()&lt;/script&gt;相关的结果.</h2><center>

 发现在h2标签中<>被转义了,但是value中的还是一样

上网查了一下,发现能php函数能转义的是htmlspecialchars(因为这个函数可以预防xss)

那我们就可以想办法绕过这个函数来进行xss注入了。通过了解 这个函数我们可以通过闭合标签的方式来进行绕过

闭合标签就是 <h1> </h1> 这样的 也有单闭合标签<img src=""> 

这里只做大概介绍 所以要想进行xss注入,只需要将属性的标签闭合就可以了,输入 "><script>alert(1)</script>  ​就可以了

 

 存储型xss会在搭好皮卡丘靶场之后进行注入

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python 随练】今天是哪一天?

题目&#xff1a; 输入某年某月某日&#xff0c;判断这一天是这一年的第几天&#xff1f; 简介&#xff1a; 在本篇博客中&#xff0c;我们将使用Python代码解决一个日期相关的问题&#xff1a;如何确定某一天是给定年份的第几天。我们将提供问题的解析&#xff0c;并给出一…

领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

“ 接口自动化测试是指通过编写代码或使用工具&#xff0c;模拟用户发送请求&#xff0c;验证接口是否符合设计规范和功能需求的过程。” 如何用 python ddtexcel 实现接口自动化测试 接口自动化测试可以提高测试效率和质量&#xff0c;节省测试成本和时间&#xff0c;保证测试…

使用PyTorch执行特征提取和微调的迁移学习来进行图像分类

使用PyTorch执行特征提取和微调的迁移学习来进行图像分类 1. 效果图2 项目结构3 什么是迁移学习4 如何使用PyTorch进行迁移学习&#xff1f;5 花朵数据集源码train_feature_extraction.pyfine_tune.pyinference.py 参考 这篇博客将介绍如何使用PyTorch深度学习库执行图像分类的…

U盘重装系统Win10详细步骤和方法

当前超多的用户都在使用Win10系统&#xff0c;有些用户想使用U盘来重装一下Win10系统&#xff0c;但不知道具体怎么操作&#xff0c;其实操作起来难度不会很大&#xff0c;可以按照以下小编给大家分享的U盘重装系统Win10详细步骤和方法&#xff0c;就能轻松顺利完成U盘重装系统…

Jetson TX2 NX的GPIO引脚使用方式

Jetson TX2 NX是一款高性能的嵌入式AI计算平台&#xff0c;其中引脚的设计和使用对于开发人员来说非常重要。在本文中&#xff0c;我们将会介绍Jetson TX2 NX的引脚并说明其功能和使用方式。 官方文档官方文档 引脚概述 Jetson TX2 NX具有许多不同类型的引脚&#xff0c;包…

C++ 类的构造函数和析构函数

目录 类的构造函数和析构函数构造函数声明构造函数定义构造函数使用构造函数默认构造函数 析构函数析构函数的声明析构函数的定义 改进Stock类(加入构造函数和析构函数) 类的构造函数和析构函数 构造函数 常规的初始化语法不适用类的初始化 例如&#xff1a; int a 10;//整…

Deepin20.9 安装Mysql

文章目录 mysql下载查看 mysql 状态卸载卸载mysql&#xff1a;清理残留数据检查是否删除完毕 mysql Deepin 安装 下载 从网上下载 https://dev.mysql.com/get/mysql-apt-config_0.8.23-1_all.deb 安装 mysql-apt-config 下载文件名: mysql-apt-config_0.8.23-1_all.deb …

PoseiSwap IDO 即将开启,一览 $POSE 经济模型

以太坊创始人 Vitalik Buterin 曾在今年以太坊黑山大会上&#xff0c;进行了以“以太坊的三个技术挑战&#xff1a;扩容、隐私和用户安全”为主题的演讲&#xff0c;阐明了具有隐私性、可扩展性和安全性的且易访问的区块链生态将是行业发展趋势&#xff0c;或许重复造轮子正在变…

【探索 Kubernetes|作业管理篇 系列 10】Pod 健康检查和恢复机制

前言 大家好&#xff0c;我是秋意零。 上一篇中介绍了&#xff0c;Pod 的服务对象&#xff0c;从而对 Pod 有了更深的理解&#xff1b; 今天的主题是 Pod 健康检查和恢复机制&#xff0c;我们将结束 Pod 的内容。 最近搞了一个扣扣群&#xff0c;旨在技术交流、博客互助&am…

图像中提取文本

将从此图像中提取文本。我使用得是 PyCharm&#xff0c;您随意编辑器或IDE 1、下载所需得库和exe文件&#xff1a; tesseract-ocr 可执行exe文件下载后&#xff0c;安装时无需指定安装目录。 http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3…

代码随想录二刷day25 | 回溯 之 216.组合总和III 17.电话号码的字母组合

216.组合总和III 题目链接 解题思路&#xff1a; 选取过程如图&#xff1a; 图中&#xff0c;可以看出&#xff0c;只有最后取到集合&#xff08;1&#xff0c;3&#xff09;和为4 符合条件。 递归三部曲 确定递归函数参数 和77. 组合 一样&#xff0c;依然需要一维数组path…

走进人工智能|深度学习 算法的创世纪

前言&#xff1a; 深度学习通过训练深层神经网络模型&#xff0c;可以自动学习和提取数据的特征&#xff0c;包括更准确的图像识别、自然语言处理、医学诊断等方面的应用。 文章目录 序言背景算法的创世纪技术支持应用领域程序员如何学总结 序言 深度学习是一种机器学习方法&a…

easyui05(datagrid数据新增)

一.对话框&#xff1a;Dialog 加载页面 <div id"myDialog" style"display:none"></div> 二.editGoods.jsp 表单 myForm <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <tit…

2023年互联网Java面试复习大纲:ZK+Redis+MySQL+Java基础+架构

多数的公司总体上面试都是以自我介绍项目介绍项目细节/难点提问基础知识点考核算法题这个流程下来的。有些公司可能还会问几个实际的场景类的问题&#xff0c;这个环节阿里是必问的&#xff0c;这种问题通常是没有正确答案的&#xff0c;就看个人的理解&#xff0c;个人的积累了…

Vue练手项目之仿京东到家主页

目录 概述1.效果展示2.使用原始HtmlCSS实现3.使用Vue.js进行组件化3.1 Header部分组件实现3.1.1图标的展示3.1.2 定义Vue调试的名称3.1.3 使用scoped隔离组件间的css影响 3.2 附近店铺部分实现3.3 底部导航栏组件的实现3.4 将组件组成一个整体页面 4.代码地址 概述 本人是一个…

【微信小程序开发】第 9 课 - 小程序的协同工作和发布

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、协同工作 1.1、了解权限管理需求 1.2、了解项目成员的组织结构 1.3、小程序的开发流程 2、小程序成员管理 2.1、成员管…

【Unity Shader】Special Effects(八)Wireframe 线框化(UI)

更新日期:2023年6月17日。 Github源码:[点我获取源码] 索引 Wireframe 线框化思路分析Sobel算子片元输入数据结构-定义片元输入数据结构-填充片元输入数据结构-传入属性定义求梯度值方法求边缘方法范围控制线框化渐变动画Wireframe 线框化 线框化效果可以将一张图像根据纹理…

从618「技术暗战」,看乡村振兴的未来「赛点」

作者 | 曾响铃 文 | 响铃说 作为消费复苏后的首个消费节点&#xff0c;从“史上消费者福利最大的618”“史上投入最大的一届618”等口号&#xff0c;都能感觉到这届618的火药味比以往要浓得多。 有业内人士透露&#xff0c;这次的年中大促无论从商品种类、数量还是提供的服务…

【自动化测试】是否有必要做自动化测试?

‍目录 一、前言 二、自动化目的 三、自动化分类 四、自动化实现 一、前言 在一些测试交流群经常会看到有小伙伴在问&#xff0c;"怎么做自动化测试&#xff1f;学习自动化测试有什么资料吗&#xff1f;自动化测试是不是很牛逼&#xff1f;" &#xff0c;甚至有…

Python之面向对象和继承

一、关于None和判断的总结 1.1、None是什么&#xff1f; 与C和JAVA不同&#xff0c;python中是没有NULL的&#xff0c;取而代之的是None。None是一个特殊的常量&#xff0c;表示变量没有指向任何对象。在Python中&#xff0c;None本身实际上也是对象&#xff0c;有自己的类型N…