XPATH 注入漏洞

一、XPATH

1、XPATH 概述:

        XPath 是一种查询语言,它描述了如何在 XML 文档中查找特定元素(包括属性、处理指令等)。既然是一种查询语言,XPath 在一些方面与 SQL 相似,不过,XPath 的不同之处在于它可以用来引用 XML 文档的几乎任何部分,而不受访问控制限制。

        而在 SQL 中,一个“用户”(在 XPath/XML 上下文中未定义的术语) 的权限被限制在一个特定的数据库,表,列或者行。

2、漏洞概述:

        使用 XPath 注入攻击,攻击者可以修改 XPath 查询语句来执行所选择的操作 。

        XPath 盲注攻击可以从一个使用不安全方式嵌入用户信息的应用中提取数据。在输入未被过滤的情况下, 攻击者可以提交并执行有效的 XPath 代码。

        这种类型的攻击适用于以下情况:攻击者不清楚 XML 文档的架构,或者错误消息被抑制,一次只能通过布尔化查询来获取部分信息,就像 SQL 盲注一样。

二、实例

1、实例源码:

(1)xpath.php

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><form method="POST">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="登录" name="submit"></form></body>
</html>
<?php
if(file_exists('xpath_user.xml')){$xml=simplexml_load_file('xpath_user.xml');if($_POST['submit']){$username=$_POST['username'];$password=$_POST['password'];$sql="//user[@username='{$username}' and @password='{$password}']";$resulit = $xml->xpath($sql);if(count($resulit)==0){echo '登录失败';}else{echo "登录成功";}}}
?>

(2)xpath_user.xml

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1" username="admin" password="admin"></user>
<user id="2" username="root" password="admin"></user>
<user id="3" username="system" password="system"></user>
</users>

2、注入操作:

(1)有回显,直接注入

a' or '1'='1

(2)无回显,使用盲注

1、admin'and string-length(@password)=5 or '1'='12、admin'and substring(@password,1,1)='a' or '1'='1

三、防御:

1、数据提交到服务器上,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。

2、检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串。

3、对于系统出现的错误信息,以 IE 错误编码信息替换,屏蔽系统本身的出错信息。

4、参数化 XPath 查询

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

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

相关文章

ES-初识ES

文章目录 介绍ElasticSearchElasticSearch的主要功能ElasticSearch的主要特性ElasticSearch的家族成员LogStashKibanaBeats ELK&#xff08;ElasticSearch LogStash Kibana&#xff09;的应用场景与数据库集成指标采集/日志分析 安装和配置ElasticSearch一、安装1、下载ES安装…

深度学习实战:基于TensorFlow与OpenCV的手语识别系统

文章目录 写在前面基于TensorFlow与OpenCV的手语识别系统安装环境一、导入工具库二、导入数据集三、数据预处理四、训练模型基于CNN基于LeNet5基于ResNet50 五、模型预测基于OpenCV 写在后面 写在前面 本期内容&#xff1a;基于TensorFlow与OpenCV的手语识别系统 实验环境&…

lv9 嵌入式开发 数据库sqlite

1 数据库基本概念 数据&#xff08;Data&#xff09; 能够输入计算机并能被计算机程序识别和处理的信息集合 数据库 &#xff08;Database&#xff09; 数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合 2 常用的数据库 大型数据库…

过了面试,后面的在线测评还会刷人吗?

过了面试&#xff0c;后面的在线测评还会刷人吗&#xff1f;完全有可能刷&#xff0c;如果不是为了刷&#xff0c;何必要给你做线上测评&#xff0c;我说的有道理不&#xff1f; 好吧&#xff0c;说到为什么在线测评要刷人&#xff0c;怎么刷&#xff1f; 怎么才能确保不被刷&…

Idea 对容器中的 Java 程序断点远程调试

第一种&#xff1a;简单粗暴型 直接在java程序中添加log.info()&#xff0c;根据需要打印信息然后打包覆盖&#xff0c;根据日志查看相关信息 第二种&#xff1a;远程调试 在IDEA右上角点击编辑配置设置相关参数在Dockerfile中加入 "-jar", "-agentlib:jdwp…

【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG

【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG 文章目录 导入库初始化PWM开启PWMPWM硬件BUG附录&#xff1a;列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 导入库 from misc import PWM_V2或者 from misc import PWM但我觉得PWM_V2好用 初…

Adobe:受益于人工智能,必被人工智能反噬

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;Adobe(ADBE)受益于生成式人工智能的兴起&#xff0c;其一直能实现两位数的收入增长就证明了这一点。 &#xff08;2&#xff09;在生成式人工智能兴起时&#xff0c;该公司就快…

C#WPF命令行参数实例

命令行参数这样是一种技术,传递一组参数到你希望开始的应用,以某种方式影响它。 如使用Windows自带的记事本,在开始菜单选择运行或者按一下Win+R键,输入:notepad.exe c:\Windows\win.ini。这就在记事本中打开了win.ini文件。记事本简单的寻找一条或多条参数,然后使用它们…

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(六)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这节主要讲条件节点与并发节点的有效性检查&#xff0c;主要是增加这两个节点的子节点检查&#xff0c;因为…

【从零开始学习Redis | 第五篇】基于布隆过滤器解决Redis的穿透问题

前言&#xff1a; 在如今的开发中&#xff0c;使用缓存中间件Redis已经成为一项很广泛的技术&#xff0c;Redis的高性能大大优化了我们的服务器性能&#xff0c;缓解了在高并发的情况下服务器的压力。它基于缓存的形式&#xff0c;在内存中保存数据&#xff0c;减少对磁盘的IO操…

听GPT 讲Rust源代码--library/std(15)

题图来自 An In-Depth Comparison of Rust and C[1] File: rust/library/std/src/os/wasi/io/fd.rs 文件路径&#xff1a;rust/library/std/src/os/wasi/io/fd.rs 该文件的作用是实现与文件描述符&#xff08;File Descriptor&#xff09;相关的操作&#xff0c;具体包括打开文…

✔ ★【备战实习(面经+项目+算法)】 11.5学习

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…

MFC 基础篇(一)

目录 一.SDK编程 二.为什么要学MFC&#xff1f; 三.MFC能做什么&#xff1f; 四.MFC开发环境搭建 五.MFC项目创建 六.消息映射机制 一.SDK编程 Application Programming Interface 应用程序编程接口。 Software Development Kit 软件开发工具包&#xff0c;一般会包括A…

indexedDB笔记

indexedDB 该部分内容主要源于https://juejin.cn/post/7026900352968425486 常用场景&#xff1a;大量数据需要缓存在本地重要概念 仓库objectStore&#xff1a;类似于数据库中的表&#xff0c;数据存储媒介索引index&#xff1a;索引作为数据的标志量&#xff0c;可根据索引获…

次小生成树学习笔记

次小生成树有严格次小生成树和非严格次小生成树之分。常见的是严格次小生成树。 严格次小生成树的定义如下&#xff1a; 如果最小生成树选择的边集是 E M E_M EM​&#xff0c;严格次小生成树选择的边集是 E S E_S ES​&#xff0c;那么需要满足&#xff1a;( v a l u e ( e…

Spring Boot 面试题——常用注解

目录 Spring Bean将一个类声明为 Bean自动装配 Bean声明 Bean 的作用域 前端后传值处理常见的 HTTP 请求类型读取配置文件定时任务全局 Controller 层异常处理 Spring Bean 将一个类声明为 Bean Component&#xff1a;通用的注解&#xff0c;可标注任意类为 Spring 组件。如果…

【入门Flink】- 04Flink部署模式和运行模式【偏概念】

部署模式 在一些应用场景中&#xff0c;对于集群资源分配和占用的方式&#xff0c;可能会有特定的需求。Flink为各种场景提供了不同的部署模式&#xff0c;主要有以下三种&#xff1a;会话模式&#xff08;Session Mode&#xff09;、单作业模式&#xff08;Per-Job Mode&…

小程序如何设置用户同意服务协议并上传头像和昵称

为了保护用户权益和提供更好的用户体验&#xff0c;设置一些必填项和必读协议是非常必要的。首先&#xff0c;用户必须阅读服务协议。服务协议是明确规定用户和商家之间权益和义务的文件。通过要求用户在下单前必须同意协议&#xff0c;可以确保用户在使用服务之前了解并同意相…

【机器学习】随机森林

随机森林 文章目录 随机森林1. 什么是集成学习方法2. 随机森林3. 随机森林工作过程4. API5. 总结 1. 什么是集成学习方法 集成学习方法通过建立几个模型组合来解决单一预测问题。它的工作原理就是生成多个分类器/模型&#xff0c;各自独立地学习和做出预测。这些预测最后结合成…

分析:如何多线程运行测试用例

这是时常被问到的问题&#xff0c;尤其是UI自动化的运行&#xff0c;过程非常耗时&#xff0c;所以&#xff0c;所以多线程不失为一种首先想到的解决方案。 多线程是针对的测试用例&#xff0c;所以和selenium没有直接关系&#xff0c;我们要关心的是单元测试框架。 unittest …