sql报错注入:extractvalue、updatexml报错原理-阿里云开发者社区

开发者社区> 优惠码优惠> 正文

sql报错注入:extractvalue、updatexml报错原理

简介: 报错注入:extractvalue、updatexml报错原理 MySQL 5.1.5版本中添加了对XML文档进行查询和修改的两个函数:extractvalue、updatexml 名称 描述 ExtractValue() 使用XPath表示法从XML字符串中提取值 UpdateXM.
+关注继续查看

报错注入:extractvalue、updatexml报错原理

MySQL 5.1.5版本中添加了对XML文档进行查询和修改的两个函数:extractvalue、updatexml

名称 描述
ExtractValue() 使用XPath表示法从XML字符串中提取值
UpdateXML() 返回替换的XML片段

通过这两个函数可以完成报错注入

一、extractvalue函数

ExtractValue(xml_frag, xpath_expr)

ExtractValue()接受两个字符串参数,一个XML标记片段 xml_frag和一个XPath表达式 xpath_expr(也称为 定位器); 它返回CDATA第一个文本节点的text(),该节点是XPath表达式匹配的元素的子元素。

第一个参数可以传入目标xml文档,第二个参数是用Xpath路径法表示的查找路径

例如:SELECT ExtractValue('<a><b><b/></a>', '/a/b'); 就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。

1551927935215
(这里我们是为了学习报错注入,所以不需要太详细的知道该函数具体原理)

利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出。
1551928141656

二、updatexml函数

UpdateXML(xml_target, xpath_expr, new_xml)

xml_target:: 需要操作的xml片段

xpath_expr: 需要更新的xml路径(Xpath格式)

new_xml: 更新后的内容

此函数用来更新选定XML片段的内容,将XML标记的给定片段的单个部分替换为 xml_target 新的XML片段 new_xml ,然后返回更改的XML。xml_target替换的部分 与xpath_expr 用户提供的XPath表达式匹配。

如果未xpath_expr找到表达式匹配 ,或者找到多个匹配项,则该函数返回原始 xml_targetXML片段。所有三个参数都应该是字符串。使用方式如下:

mysql> SELECT
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '/a', '<e>fff</e>') AS val1,
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '/b', '<e>fff</e>') AS val2,
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '//b', '<e>fff</e>') AS val3,
    ->   UpdateXML('<a><b>ccc</b><d></d></a>', '/a/d', '<e>fff</e>') AS val4,
    ->   UpdateXML('<a><d></d><b>ccc</b><d></d></a>', '/a/d', '<e>fff</e>') AS val5
    -> \G
***********结果**************
val1: <e>fff</e>
val2: <a><b>ccc</b><d></d></a>
val3: <a><e>fff</e><d></d></a>
val4: <a><b>ccc</b><e>fff</e></a>
val5: <a><d></d><b>ccc</b><d></d></a>

这里和上面的extractvalue函数一样,当Xpath路径语法错误时,就会报错,报错内容含有错误的路径内容:

1551929714141

参考链接:
https://blog.csdn.net/zpy1998zpy/article/details/80631036
https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html

原文地址https://www.cnblogs.com/laoxiajiadeyun/p/10488731.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WEEX 报错 TypeError: Converting circular structor to JSON 的解决方法
在进行千牛QAP插件开发的时候,有时会遇到 TypeError: Converting circular structor to JSON,并且看不到报错位置,对新手可能会造成疑惑。
1722 0
Windows 安装补丁报错 0xc8000247 Windows update 当前无法检查更新,因为未运行服务。您可能需要重新启动计算机。
Windows 安装补丁报错 0xc8000247 Windows update 当前无法检查更新,因为未运行服务。您可能需要重新启动计算机。
934 0
Crystal Reports拉报表报错:Error detected by database DLL
问题描述: 最近在使用Crystal Reports打印报表时,提示错误信息:“Error detected by database DLL.” 如下图: 经查找,是因为数据库名称不同造成的; 用户的测试环境使用的库名称为ClaimsReport; 我们本地使用的库名称为Claims;   解决方案: 打开报表工具Crystal Reports 8.5,进入Database->Set Location界面,如下图:   把红框中数据库名称去掉,然后点击按钮【Done】即可。
1069 0
nodejs express 启动报错:Error: Cannot find module 'xxx'
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/54236189 nodejs express 启动报错:Error: Cannot find module 'xxx',这是因为缺少模块的引用。
3063 0
hexo g报错 用的next主题 ERROR Script load failed: themes/hexo-theme-next/scripts/tags/exturl.js
ERROR Script load failed: themes/hexo-theme-next/scripts/tags/exturl.js Error: Cannot find module 'hexo-util' at Function.Module._resolveFilename (module.js:336:15) at Function.Module._loa
3420 0
报错 invalid [default store dir]: /tmp/
php sdk解压以后文件如下   推荐处理方案    1.如果使用支付宝sdk,首先lotusphp_runtime 文件也要一起使用  支付宝现在的php sdk中有lotus框架可以和aop文件   夹放在同一级    2.
438 0
+关注
优惠码优惠
阿里云优惠码阿里云推荐券bieryun.com
203
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载