updatexml()和extractvalue()报错注入原理

updatexml()函数分析

根据其名字,更新xml,说白了就是查找一个xml并替换它的名字

updatexml (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称;

第二个参数:XPath_string (Xpath格式的字符串,xpath就是xml的路径);

第三个参数:new_value,String格式,替换查找到的符合条件的数据;

返回内容:若xpath正确则返回更改对象名称,否则返回xpath错误内容

extractvalue()函数分析

这个也是找一个xml并返回内容

extractvalue (XML_document, XPath_string);

第一个参数:XML_document是String格式,为XML文档对象的名称;

第二个参数:XPath_string (Xpath格式的字符串,xpath就是xml的路径);

返回内容:若xpath正确则返回目标XML查询的结果,否则返回xpath错误内容

报错原因和利用:

1.可以看到上面两函数里都有xpath路径,而在xpath中,插入~(ASCII码是0x7e)和^(ASCII码是0x5e)等特殊字符是非法的,也就会产生报错,而这些特殊字符也恰好是报错注入的关键点,而当报错内容为SQL语句的时候,SQL那边的解析器会自动解析该SQL语句,就造成了SQL语句的任意执行。

2.知道了函数报错的原因,我们就可以利用SQL语句里面的字符串联合函数concat、group_concat等,将特殊字符跟SQL语句联合起来,产生报错,并返回SQL语句的执行结果。

就如我写过的靶场博客,很多题目用到了报错注入

简单例子:

select updatexml(1,concat(0x7e,database()),1)

select extractvalue("a",concat(0x7e,database()))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值