pikachu靶场通关笔记10 XSS关卡06-XSS之盲打

article/2025/6/26 7:41:27

目录

一、XSS盲打

二、源码分析

1、进入靶场

2、源码分析

3、渗透思路 

三、渗透实战

1、探测是否有过滤

2、管理员端查看输出

3、盲打页面注入Payload 

4、管理员查看攻击效果


本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关)渗透集合,通过对XSS关卡源码的代码审计找到真实原因,讲解XSS的原理并进行渗透实践,本文为XSS第06关-XSS盲打的渗透部分,并且结合源码分析,对比通用的XSS攻击讲解攻击成因。

一、XSS盲打

XSS盲打是一种特殊的存储型XSS攻击,其核心特点是:

  • 攻击者无法立即看到攻击效果:恶意脚本被存储在服务器后,需等待特定用户(如管理员)访问包含该脚本的页面时才会触发。

  • 延迟性攻击:从注入到触发可能间隔数小时甚至数天。

XSS(跨站脚本攻击)指攻击者通过在网页中注入恶意 JavaScript、HTML 等脚本代码,利用网站对用户输入过滤不严格的缺陷,当用户访问被攻击页面时,浏览器会执行这些恶意脚本,从而窃取用户敏感信息、劫持会话、篡改页面内容,严重威胁用户隐私和系统安全。

XSS(跨站脚本攻击)和 XSS 盲打(Blind XSS)主要区别如下:

对比维度XSSXSS 盲打
攻击反馈攻击者能即时看到攻击效果,可通过用户访问含恶意脚本页面,观察脚本执行后的情况,如弹窗等攻击者难以立即知晓攻击是否成功,因为注入点和显示点分离,需等待特定用户访问特定页面触发
注入位置注入点与显示点通常在同一页面或同一应用流程中,较易定位和测试注入点和显示点往往不同,可能注入在某个页面,但在其他管理页面显示,增加攻击难度和隐蔽性
攻击场景常见于论坛、搜索框等用户输入会即时展示的场景多见于用户输入数据存储后,由管理员或其他特定用户在后台页面查看的场景,如留言反馈、表单提交

二、源码分析

1、进入靶场

进入pikachu靶场XSS的06关“XSS盲打”关卡,如下所示是一个留言页面,具体如下所示。

http://127.0.0.1/pikachu/vul/xss/xssblind/xss_blind.php

2、源码分析

打开xss_blind.php文件,可以看到直接将用户提交的时间,内容和用户名通过SQL语句条件到数据库中,没有什么限制。我们输入的内容不会在前端输出,而是提交到了后台,管理员可能会去看。如果我们输入一个JS代码,管理员登录后台管理界面,如果后台把我们的内容输出那后台管理员可能遭受到我们的XSS攻击。具体代码如下所示。

接下来进行详细分析,为何代码存在 XSS 盲打安全风险:

  • 缺乏对 XSS 攻击的防护escape 函数通常是为防止 SQL 注入而设计,对输入数据进行 SQL 层面的转义。但它没有对可能的 HTML 标签和 JavaScript 代码进行处理,攻击者可以输入包含恶意脚本的内容,如 <script>alert('XSS')</script>,这些内容会被原样存储到数据库中。
  • 未对输出内容进行过滤:当管理员或其他用户在其他页面查看这些存储的数据时,由于没有对从数据库取出的数据进行 HTML 实体编码等安全处理,浏览器会将其中的脚本代码解析并执行,从而导致 XSS 攻击。因为攻击的注入点(用户提交数据的页面)和显示点(管理员查看数据的页面)不同,属于 XSS 盲打攻击场景。 

对源码进行详细注释,具体如下所示。 

<?php
// 调用 connect 函数,该函数应该是自定义的用于建立数据库连接的函数
// 连接成功后将连接对象赋值给变量 $link
$link = connect();// 初始化一个空字符串 $html,用于存储后续要输出给用户的提示信息
$html = '';// 检查 $_POST 数组中是否存在键为 "content" 的元素,并且该元素的值不为 null
// 即判断用户是否通过 POST 请求提交了名为 "content" 的数据
if (array_key_exists("content", $_POST) && $_POST['content'] != null) {// 调用 escape 函数对用户提交的 "content" 数据进行处理// escape 函数可能是自定义的,用于对输入数据进行转义,防止 SQL 注入// 将处理后的结果赋值给变量 $content$content = escape($link, $_POST['content']);// 同样地,调用 escape 函数对用户提交的 "name" 数据进行处理// 并将处理后的结果赋值给变量 $name$name = escape($link, $_POST['name']);// 获取当前时间,并按照 'Y-m-d g:i:s' 的格式进行格式化// 例如格式可能为 '2024-10-10 10:10:10'$time = date('Y-m-d g:i:s');// 构建一个 SQL 插入语句,用于将用户提交的时间、内容和姓名信息插入到名为 xssblind 的数据库表中$query = "insert into xssblind(time,content,name) values('$time','$content','$name')";// 调用 execute 函数执行上述构建好的 SQL 插入语句// execute 函数应该是自定义的,用于封装执行 SQL 语句的逻辑$result = execute($link, $query);// 检查执行 SQL 语句后受影响的行数是否为 1// 如果为 1,说明插入操作成功if (mysqli_affected_rows($link) == 1) {// 若插入成功,向 $html 变量中追加一段提示信息,告知用户提交成功$html .= "<p>谢谢参与,阁下的看法我们已经收到!</p>";} else {// 若插入失败,向 $html 变量中追加一段提示信息,提示用户提交出现异常,需要重新提交$html .= "<p>ooo.提交出现异常,请重新提交</p>";}
}
?>

其中escape为防止SQL注入的过滤函数,并没有对JavaScript进行过滤,如下所示。

3、渗透思路 

XSS盲打的核心是向隐蔽输入点注入恶意脚本,利用后台管理功能触发攻击,具体流程如下所示。

三、渗透实战

1、探测是否有过滤

进入到pikachu靶场的XSS盲打关卡,点击右上角的提示,提示了后台登录地址与密码。接下来输入关键字判断是否有过滤,关键字包括:单引号、双引号、左右尖括号、问号、&、字符串与数字,第一个框内输入'"<>?&ljn20241019,第二个框内输入'"<>?&ljn20250502,具体如下图所示。

http://127.0.0.1/pikachu/vul/xss/xssblind/xss_blind.php

点击提交后再次进入留言界面,前端没有输出,当然通过上一步的源码分析我们可以看到数据是被保存到后台数据库中的。根据提示我们猜测留言在管理员端可以看到,接下来我们根据提示进入管理员界面查看输出。 

2、管理员端查看输出

进入管理员界面,输入暴力破解关卡获取到的用户名admin和密码123456登录,如下所示。

http://127.0.0.1/pikachu/vul/xss/xssblind/admin_login.php  

点击登录后发现之前输入的内容记录在后台,且内容没有被过滤掉,如下所示。 

右键-查看元素-查看器中搜索关键字ljn,发现输入的内容,是列表展示是在表格td标签内,没有编码,如下所示。 

基于此我们可以判断两个输入框的部分均存在XSS安全风险,可以在输入端注入XSS Payload,然后再管理员端查看注入效果。 

3、盲打页面注入Payload 

回到盲打页面,对两个输入框都进行测试,具体如下所示。

留言部分注入:<script>alert('1019')</script>

姓名部分注入:<script>alert('ljn')</script>

4、管理员查看攻击效果

 登录后台,成功出现弹窗,发现输入的payload触发了两次,说明两个输入框都存在xss注入,在一个输入框内输入即可,具体如下图所示。


http://www.hkcw.cn/article/oTCVhpPtmX.shtml

相关文章

抛砖引玉:RadarDet4D,NuScenes数据集Radar模态目标检测第二名(即将开源)

这几年一直在关注自动驾驶3D目标检测相关的研究。在NuScenes数据集上有很多经典的模型被提出并得到了验证&#xff0c;纯视觉3D目标检测经典的方法有BEVFormer、BEVDet系列、DETR3D、Sparse4D等工作&#xff0c;基于LiDAR的有CenterPoint、多模态有BEVFusion、DAL、UniTR等。 …

《多状态DP:状态设计与状态转移方程速成指南》​

1.按摩师 题目链接&#xff1a;面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a;从一个预约请求队列中&#xff0c;找出一个总预约时间最长的预约集合&#xff0c;不能选择相邻位置的预约 算法讲解&#xff1a;动态规划 1.状态表示&#…

Spring Cloud 开发入门:环境搭建与微服务项目实战(上)

一、开发环境搭建 1. JDK 安装与版本选择 版本选择解析 Java 是 Spring Cloud 微服务开发的基础&#xff0c;选择合适的 JDK 版本至关重要&#xff0c;特别是在框架兼容性和生产环境稳定性方面。 &#xff08;1&#xff09;主流 JDK 版本对比 版本发布年份支持状态特点简述J…

PINN for PDE(偏微分方程)3 - 正向问题 - Burgers’ equation

PINN for PDE(偏微分方程)3 - 正向问题 - Burgers’ equation 目录 PINN for PDE(偏微分方程)3 - 正向问题 - Burgers’ equation一、什么是PINN的正问题二、求解的实际例子 - Burgers’ equation2.1 Burgers方程2.2 无解析解解决办法 - 龙哥库达&#xff08;Runge-Kutta 4th O…

机器人夹爪的选型与ROS通讯——机器人抓取系统基础系列(六)

文章目录 前言一、夹爪的选型1.1 任务需求分析1.2 软体夹爪的选型 二、夹爪的ROS通讯2.1 夹爪的通信方式介绍2.2 串口助手测试2.3 ROS通讯节点实现 总结Reference: 前言 本文将介绍夹爪的选型方法和通讯方式。以鞋子这类操作对象为例&#xff0c;将详细阐述了对应的夹爪选型过…

003-Python-脚本学习-安装mysql数据库(CentOS7.9)

#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Name: Python-脚本学习-安装mysql数据库&#xff08;CentOS7.9&#xff09;.py # Author: songp-it # Date: 2024-03-21 # Description: 在CentOS 7.9上安装MySQL数据库import subprocess import sys import osdef disable_s…

数字孪生离心泵,精准复刻泵体运行

图扑数字孪生离心泵&#xff0c;以 1:1 高精度建模&#xff0c;逼真呈现离心泵结构。动态模拟内部水流与部件运转&#xff0c;实时反馈运行参数&#xff0c;助力运维人员精准掌握泵体状态&#xff0c;高效诊断故障&#xff0c;提升离心泵运行管理水平。

这几种“奇葩果” 买了就后悔!

这几种“奇葩果”买了就后悔。“拇指西瓜”,长得像西瓜的微缩板,但压根不是西瓜。吃起来也远没有西瓜的甘甜多汁。刺角瓜,也叫火参果。很多人因为奇异的外表而好奇购买,味道酸涩。虽然富含维生素C与膳食纤维,但价格却被商家炒得过于昂贵。露兜果,也叫野菠萝,外观形似菠萝…

王楚钦与女粉丝合影手立马放背后,妥妥的男德模范生!

王楚钦与女粉丝合影手立马放背后。王楚钦现身魏桥参加活动,现场人气爆棚,大批球迷慕名而来,只为近距离目睹偶像风采。难得的机会让合影环节热度高涨,王楚钦又成了人形打卡机,耐心地满足球迷的合影请求。遇到女性球迷合影时,王楚钦的手臂自动就藏了起来,保持得体的距离,…

Java开发工具——Arthas线上查询工具

摘要 本文主要介绍了 Java 开发工具 Arthas 的安装、启动及使用。包括本地安装与启动、容器安装与启动、基础命令与使用以及常用命令与使用等内容。通过 Arthas&#xff0c;开发者可以方便地对 Java 应用进行线上排错和监控&#xff0c;提高开发效率。 1. Arthas 本地安装与启…

5.RV1126-OPENCV 图形计算面积

一.图形面积、弧长计算介绍 前面我们已经把图形轮廓的检测、画框等功能讲解了一遍。这次主要结合轮廓检测的 API 去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的 API 如 contourArea…

rabbitmq Topic交换机简介

1. Topic交换机 说明 尽管使用 direct 交换机改进了我们的系统&#xff0c;但是它仍然存在局限性——比方说我们的交换机绑定了多个不同的routingKey&#xff0c;在direct模式中虽然能做到有选择性地接收日志&#xff0c;但是它的选择性是单一的&#xff0c;就是说我的一条消息…

JavaSE 常见问题解析

最近正在复习Java八股&#xff0c;所以会将一些热门的八股问题&#xff0c;结合ai与自身理解写成博客便于记忆 本文将以以上问题作为基础 String 相关问题 String 底层数据类型&#xff1f; String 在 Java 9 之前底层使用 char[] 数组存储字符数据&#xff0c;Java 9 及以…

潜入水面:穿越“冰山”之旅,探寻Java鲜为人知的一面

“冰山”梗是一种网络现象&#xff0c;幽默而有时令人不安地展示了某个主题的知识或入门层次——从冰山之巅简单、广为人知的常识到只有最坚韧的老兵才能理解的黑暗、神秘深处。想象一座海洋上矗立的冰山&#xff1a;表面可见的部分只是开始&#xff0c;真正的魔法&#xff08;…

如何配置mvn镜像源为华为云

如何配置mvn镜像源为华为云 # 查找mvn 配置文件 mvn -X help:effective-settings | grep settings.xml# 配置mvn镜像源为华为云&#xff0c;/home/apache-maven-3.9.5/conf/settings.xml文件路径需要根据上一步中查询结果调整 cat > /home/apache-maven-3.9.5/conf/setting…

【DAY37】早停策略和模型权重的保存

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a; 对信贷数据集训练后保存权…

TASK OA 案例hook

TASK OA 案例hook 定义的状态 useRef & useForm ref使用&#xff1a; xxx 尽可能使用组件库antd内部提供的方法 两大稍微比较难的组件&#xff1a;table 和 form 服务器通信 使用async/await 不用想配套使用 try/catch 初次渲染拉取query。useEffect(..., []) 状态更新useE…

Kafka集成Flume/Spark/Flink(大数据)/SpringBoot

Kafka集成Flume Flume生产者 ③、安装Flume&#xff0c;上传apache-flume的压缩包.tar.gz到Linux系统的software&#xff0c;并解压到/opt/module目录下&#xff0c;并修改其名称为flume Flume消费者 Kafka集成Spark 生产者 object SparkKafkaProducer{def main(args:Array[S…

Linux指令:

我们今天来学习一下linux的一些相关的指令L&#xff1a; 1. 快速认识6~8个指令&#xff1a; 第一条&#xff1a;pwd pwd指令表示的是我当前在哪条路径下&#xff1b;我当前在哪里&#xff1b; 我们看这个第二句话&#xff0c;因为在windows环境下&#xff0c;当我们登录进入到…

网络攻防技术五:网络扫描技术

文章目录 一、网络扫描的基础概念二、主机发现三、端口扫描1、端口号2、端口扫描技术3、端口扫描隐秘策略 四、操作系统识别五、漏洞扫描六、简答题1. 主机扫描的目的是什么&#xff1f;请简述主机扫描方法。2. 端口扫描的目的是什么&#xff1f;请简述端口扫描方法及扫描策略。…