admin管理员组

文章数量:1538473

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

文章目录

    • 一、xpath注入与盲注入
      • 1、什么是xpath注入
      • 2、什么是xpath盲注入
      • 3、xpath查询基本语句
    • 二、xpath注入示例
      • 1、注入漏洞页面源码:xpath.php
      • 2、注入漏洞页面关键源码分析
      • 3、账户信息存储文件:`xpath_user.xml`
      • 4、注入方法
        • (1)万能密码登录:
        • (2)payload分析:
      • 5、盲注入
        • (1)获取字符长度函数:`string-length()`
        • (2)截取字符函数:`substring(start,length)`

一、xpath注入与盲注入

1、什么是xpath注入

       XPath是一种查询语言,它描述了如何在XML文档中查找特定元素(包括属性、处理指令等)。既然是一种查询语言,XPath在一些方面与SQL相似,不过,XPath的不同之处在于它可以用来引用XML文档的几乎任何部分,而不受访问控制限制。在SQL中,一个“用户”(在XPath/XML上下文中未定义的术语)的权限被限制在一个特定的数据库,表,列或者行。使用XPath注入攻击,攻击者可以修改XPath查询语句来执行所选择的操作。

2、什么是xpath盲注入

       XPath盲注攻击可以从一个使用不安全方式嵌入用户信息的应用中提取数据。在输入未被过滤的情况下,攻击者可以提交并执行有效的XPath代码。这种类型的攻击适用于以下情况:攻击者不清楚XML文档的架构,或者错误消息被抑制,一次只能通过布尔化查询来获取部分信息,就像SQL盲注一样

3、xpath查询基本语句

       以下是一个XPath查询语句,获取loginID为admin的所有user数据,用户需要提交正确的loginID和password才能返回结果。

//users/user[loginID/text()'admin' and password/text()='123456'] 

       由于逻辑运算符的优先级NOT>OR>AND,所以如果攻击者在 loginID 字段中输入:' or 1=1 并在 password 中输入:' or 1=1 构成恒成立就能绕过校验,成功获取所有user数据。我们把这种绕过登录的方式称为万能密码登录!!!

//users/user[LoginID/text()=''or 1=1 and password/text()=''or 1=1]

       当前实验环境下,经过测试,万能密码还可以简化为:

//users/user[LoginID/text()=''or 1=1 and password/text()='111111111111']

二、xpath注入示例

1、注入漏洞页面源码:xpath.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
	<!--登录表单-->
	<form method="POST">
	用户名:

本文标签: 网络安全漏洞常规测试XPath