[网络安全]sqli-labs Less-5 解题详析-查库名(extractvalue函数)

原理

extractvalue 是一个在 XML 数据中提取值的 MySQL 内置函数。它的语法为:
EXTRACTVALUE(xml, xpath_expr)

其中 xml 是 XML 字符串,xpath_expr 是 XPath 表达式。

该函数会从 xml 参数中提取与 XPath 表达式匹配的节点值,并返回结果。如果找不到匹配的节点,则返回空字符串。如果 XPath 表达式匹配了多个节点,则只返回第一个匹配的节点的值。

例如,假设有以下 XML 数据:

<book>
  <title>MySQL Database Design and Tuning</title>
  <author>Robert D Schneider</author>
  <year>2005</year>
</book>

如果我们使用 extractvalue 函数提取 title 节点的值,可以这样写:

SELECT EXTRACTVALUE('<book><title>MySQL Database Design and Tuning</title><author>Robert D Schneider</author><year>2005</year></book>', '//title');

执行结果为:

MySQL Database Design and Tuning

实例

1' and extractvalue(1,concat(1,database())) %23
'1' 表示在输入参数中添加一个条件,该条件与其他条件相互独立,用于生成一个新的查询结果。

AND 连接符用于将新的条件与原有查询语句进行逻辑上的连接。

extractvalue(1,concat(1,database())) 表示从 XML 数据中提取值,其中第一个参数为 1,表示要查询的 XML 数据,在这里没有实际作用;第二个参数为 concat(1,database()),表示将数字 1 和当前数据库名称拼接成一个字符串,然后使用 extractvalue 函数从该字符串中提取值,并将其添加到查询结果中。如果数据库名称不为空,则返回该名称,否则返回空字符串。

回显库名security
在这里插入图片描述

上一篇:基于Java Springboot考研论坛系统


下一篇:BUUCTF—Reverse—Java逆向解密(10)