XSS注入(1)-两个简单测试理解反射型xss注入和存储型xss注入

article/2025/11/4 16:21:24

XSS注入(1)-两个例子理解反射型xss注入和存储型xss注入

XSS全称 Cross Site Script,为使与css语言重名,所以我们将其称为xss跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。
xss的分类主要有:反射型XSS、存储型XSS、DOM型XSS。有时也会将DOM型归于反射型XSS中,所以我们经常将xss分为反射型XSS和存储型XSS两大类。

一、反射型XSS

反射型xss注入( Reflected XSS)又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据返回在页面中。因为反射型xss的数据不会写入在数据库中,所以并不会保存,每一次触发都需要用户的点击。

下面通过一个简单的php文件来说明,源代码如下:

<?php
echo "Welcome,这是一个php测试网页"."<pre>";
?>
<form>
<input name="name" type="text" id="name" />
<input name="提交" type="submit" value="submit" />
</form>
<?php
if(array_key_exists("name",$_GET))
{  echo "Hello ".$_GET['name'];}
?>

这是一个最简单的反射型XSS漏洞的例子,这段代码的作用就是将用户输入的内容返回输出在页面上。

在这里插入图片描述
在这里插入图片描述
通过源代码可以看出,该页面使用get方法获取用户输入的数据,直接由服务器解析后输出在了页面上。那么来了,假设我们输入的内容正好是一些攻击语句的话会怎样?

服务器会直接将这些语句解析后返回页面。其实这就是XSS注入最直白的理解。

我们在文本框里面尝试输入<script>alert("xss")</script>,该语句也是检验网站是否存在xss漏洞最常用的方法。

如果出现弹窗,那么就可以证明存在XSS漏洞。在弹窗的内容里我们输入的是字符串“xss”,那么如果在此处输入一些查询语句或者插入删除等语句,可想而知后果的严重性。
在这里插入图片描述

我们在来用开发者模式查看以下页面代码
在这里插入图片描述
我们可以看到在页面输出位置应该显示<script>alert("xss")</script>该内容,正是因为该页面将语句解析了,所以才不能呈现出来。

二、存储型XSS

存储型XSS (Stored XSS)又称为持久型跨站点脚本,攻击者一般将攻击代码写入数据库中。每当用户打开浏览器,脚本执行。显然存储型XSS相比反射型XSS攻击危害性更大。

还是通过下面一个简单的php代码:

<?php
echo "Welcome,这是一个php测试";
?>
<form method="post" name="guestform"><table width="550" border="0" cellpadding="2" cellspacing="1"><tr><td width="100">Name:</td><td><input name="txtName" type="text" size="30" maxlength="10"></td></tr><tr><td width="100">Message:</td><td><textarea name="mtxMessage" cols="50" rows="3" maxlength="50"></textarea></td></tr><tr><td width="100">&nbsp;</td><td><input name="btnSign" type="submit" value="Sign Guestbook"></td></tr></table>
</form><?php
if( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name    = trim( $_POST[ 'txtName' ] );//Link database$servername = "localhost";$username = "root";$password = "root";$dbname = "mdb";$conn = mysqli_connect($servername, $username, $password, $dbname);// Update database$sql = "INSERT INTO guestbook (comment, name)VALUES ('$message', '$name')";if (mysqli_query($conn,$sql)) {echo "新记录插入成功";} else {echo "Error: " . $sql . "<br>" .mysqli_error($conn);}// 输出数据$sql2="SELECT comment, name FROM guestbook";$result = mysqli_query($conn, $sql2);if(mysqli_num_rows($result)){while($row = mysqli_fetch_assoc($result)) {echo "Title: " . $row["name"]. " - Message: " . $row["comment"]. "<br>";}}  mysqli_close($conn);}
?>

该代码的作用是将页面连接mysql数据库,并将输入的内容插入到数据库中。在访问该测试页面前,需要先在MySQL服务器中创建“mdb”数据库,并创建“guestbook”表格和“comment”,“name”两个字段。当然,也可以不用这几个名称,只需要在代码相应位置做出修改即可。
在这里插入图片描述
同以上一样,只需要在文本框内输入XSS攻击语句即可
在这里插入图片描述
提交后,同样显示弹窗。
在这里插入图片描述
在数据库中也可以看到,将脚本写入了表中,那么当每次访问该页面并在文本框内输入任何内容时,都会触发该脚本,从而实现了持久性的XSS攻击。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/eiW31AmF.shtml

相关文章

xss漏洞注入

定义&#xff1a; XSS攻击通常指的是通过利用网页开发时留下的漏洞&#xff0c;通过巧妙的方法注入恶意指令代码到网页&#xff0c;使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript&#xff0c;但实际上也可以包括Java、 VBScript、ActiveX、 Fla…

XSS-Lab(XSS注入笔记1-16)

前言 本篇博客主要是记录笔者完成XSS-Lab步骤以及分析 题目链接&#xff1a;https://buuoj.cn/challenges#XSS-Lab Github仓库&#xff1a;https://github.com/rebo-rn/xss-lab 出题人的题解&#xff1a;https://github.com/Re13orn/xss-lab/blob/master/XSSwrite%20up.doc…

XSS注入原理以及一些绕过姿势

介绍 XSS——跨站脚本攻击。通过这个攻击手段&#xff0c;攻击者可以将恶意的 JavaScript 代码插入存在 XSS 漏洞的 Web 页面中&#xff0c;当用户浏览带有恶意代码的页面时&#xff0c;这些恶意代码会被触发&#xff0c;从而达到攻击的目的。可以说&#xff0c;XSS 是针对用户…

XSS注入基础入门篇

XSS注入基础入门篇 1.XSS基础概念2. XSS的分类以及示例2.1 反射型XSS2.1.1 示例1&#xff1a;dvwa low 级别的反射型XSS2.1.2 攻击流程 2.2 DOM型XSS2.2.1 示例2&#xff1a;DOM型XSS注入1.环境部署2.基础版本3.进阶绕过 2.3 存储型XSS2.3.1 示例1&#xff1a;dvwa low示例2.3.…

XSS跨站脚本注入详解

一、什么是XSS跨站脚本注入(XSS注入)? XSS(Cross-site scripting)注入是一种Web安全漏洞,它允许攻击者在受害者的浏览器上执行恶意脚本,从而导致攻击者能够窃取受害者的敏感信息或者利用受害者的身份在应用程序上执行未经授权的操作。 攻击者通常会在受害者访问的Web页…

XSS注入

文章目录 前言一、XSS是什么&#xff1f;二、XSS的大致分类与利用思路1.反射型2.存储型3.DOM型 三、不同类型的XSS漏洞注入演示1.反射型xss2.存储型xss3.DOM型xss 三、XSS漏洞实战1.制作钓鱼网站获得用户的用户名和密码2.获取管理员的cookie 总结 前言 本篇文章详细讲解XSS漏洞…

XSS注入测试

XSS 全称(Cross Site Scripting) 跨站脚本攻击&#xff0c; 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时&#xff0c;脚本就会在用户的浏览器上执行&#xff0c;从而达到攻击者的目的. 比如获取用户的Cookie&#xff0c;导…

MySQL和Navicat的安装与配置

mysql和navicat的安装与配置 MySQL的安装与配置Navicat的安装与配置 安装下载&#xff1a; MySQL下载 Navicat下载 MySQL的安装与配置 将mysql文件夹转移到自己想放置的路径下 复制mysql的bin路径 打开环境变量配置 右击【此电脑】&#xff0c;打开【属性】&#xff0c;打开…

手把手教你安装MySQL+Navicat

本文为个人于 Windows10&#xff08;64位&#xff09;操作系统下 安装MySQL&#xff08;版本号&#xff1a;8.0.18&#xff09;和Navicat&#xff08;版本号&#xff1a;12&#xff09;的过程记录&#xff0c;希望也能给你带来帮助。 目录 一、MySQL的安装1. 卸载电脑上已有版…

MySQL+Navicat 下载、安装教程(Windows)

目录 前言MySQL下载安装验证 Navicat下载安装配置 前言 MySQL 在过去由于性能高、成本低、可靠性好&#xff0c;已经成为最流行的开源数据库&#xff0c;因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟&#xff0c;它也逐渐用于更多大规模网站和应用。—…

Navicat15安装使用

本安装流程适合各个版本Navicat安装 从网络下载Navicat及注册机 点击这里 链接: https://pan.baidu.com/s/1Fh4BMQF3PlUMT4_RlfBt0A?pwdph2h 提取码: ph2h 1.删除系统自带的杀毒软件&#xff0c;例如360&#xff0c;电脑管家&#xff0c;Windows Defender window10的 Windo…

MySQL下载安装教程及Navicat安装教程

一、MySQL下载安装 1.MySQL下载官网:https://dev.mysql.com/downloads/mysql/ 2. 将mysql-8.0.27-winx64文件解压&#xff08;例如路径为D:\mysql-8.0.27-winx64&#xff09;&#xff0c;如下图 3.设置PATH环境变量为D:\mysql-8.0.27-winx64文件夹的bin文件夹 4.运行cmd&#…

Navicat Premium 简介、安装、使用

Navicat 官网&#xff1a; http://www.navicat.com.cn/ 简介&#xff1a; Navicat Premium 是一套数据库开发工具&#xff0c;让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。它与 Amazon RDS、Amazon Aurora、…

Navicat Premium的下载及安装

文章目录 前言一、下载二、安装三、注册写在最后 前言 Navicat是开发人员常用的一款数据库管理工具&#xff0c;适用于Microsoft Windows、Mac OS及Linux平台&#xff0c;针对各类数据库都有相应的产品&#xff0c;快速、可靠而且价格相当便宜。 如Navicat Premium是一个可多重…

Mac系统安装MySQL连接Navicat(手把手,超详细)

Mac系统安装MySQL 在下载安装包之前&#xff0c;看一下自己下载哪个版本&#xff1a; uname -a我直接在官网下载的 -> MySQL官网下载网址 因为直接在官网下载的&#xff0c;所以运行安装包的时候会显示这个&#xff1a; 桌面左上角点击苹果logo&#xff0c;在系统偏好设…

史上最详细、最良心的MySQL 5.7 + Navicat 下载安装教程(附安装包)

这怕是史上最详细&#xff0c;最良心的MySQL5.7下载安装教程了&#xff0c;文末还有Navicat下载安装加破解的教程。 一、下载 1、可以去官网下载:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 2、通过我的百度网盘下载 链接&#xff1a;https://pan.baidu.com…

Navicat安装

一、 下载Navicat安装包 通过navicat官网下载 二、手把手教你安装Navicat 1.双击下载好的Navicat 安装包&#xff0c;弹出安装向导&#xff0c;选择下一步 2.阅读用户许可协议&#xff0c;同意请勾选“我同意”&#xff0c;并选择“下一步”。 3.选择程序安装路径。 4.默认&…

Navicat Premium 15 安装教程

安装教程 1.鼠标右击【Navicat Premium 15(64bit)】压缩包&#xff08;win11及以上系统需先选择“显示更多选项”&#xff09;选择【解压到 Navicat Premium 15(64bit)】 2.打开解压后的文件夹&#xff0c;鼠标右击【setup】选择【以管理员身份运行】 3.点击【下一步】。 4.选…

MySQL 安装及配置 Navicat 工具

MySQL安装&#xff08;压缩包&#xff09; 下载 按照自己电脑下载对应的安装包 压缩包下载地址 配置文件 解压后在文件夹中添加并配置 my.ini 文件&#xff08;更改为自己的安装目录&#xff0c;data文件夹自行创建&#xff09; [mysql] # 设置mysql客户端默认字符集 def…

Navicat12安装教程

基于mysql5.5安装Navicat12 mysql5.5下载&#xff1a;https://download.csdn.net/download/Afei_han/20582930 Navicat下载&#xff1a;https://pan.xunlei.com/s/VMfgC2p4JQZC4qEaLine8GnDA1 提取码&#xff1a;8bwd 解压出来有这4个双击点开Navicat12.exe程序 点击下一步 选…