updatexml、extractvalue和floor报错注入原理

举报
开心星人 发表于 2022/09/26 20:34:46 2022/09/26
【摘要】 updatexmlupdatexml是SQL语法的一个函数:UPDATEXML(XML_document, XPath_string, new_value)参数:1: XML_document是String格式,为XML文档对象的名称,文中为Doc2:XPath_string (Xpath格式的字符串) ,用于匹配第一个参数中的部分内容。(就像使用正则表达式匹配一个文本的特定内容一样)3:...

updatexml

updatexml是SQL语法的一个函数:
UPDATEXML(XML_document, XPath_string, new_value)
参数:
1: XML_document是String格式,为XML文档对象的名称,文中为Doc
2:XPath_string (Xpath格式的字符串) ,用于匹配第一个参数中的部分内容。(就像使用正则表达式匹配一个文本的特定内容一样)
3: new_value,String格式,替换查找到的符合条件的数据。

在这里,我们利用updatexml函数的报错机制进行注入,原理就是当第二个参数的格式和Xpath的格式不符的时候,就会产生报错,我们可以将我们的payload构造到第二个参数中,让其随着报错信息展示到页面上。

and updatexml(1, (concat('#',(payload))), 1) #
or updatexml(1, (concat('#',(payload))), 1) #

具体使用and 还是 or就要根据前面的一条语句执行是否成功来判断

extractvalue

extractvalue(xml_frag, xpath_expr)
从一个使用xpath语法的xml字符串中提取一个值。
xml_frag:xml文档对象的名称,是一个string类型。
xpath_expr:使用xpath语法格式的路径。

SQL报错注入的应用:当使用extractvalue(xml_frag, xpath_expr)函数时,若xpath_expr参数不符合xpath格式,就会报错。

~符号(ascii编码值:0x7e)是不存在xpath格式中的, 所以一旦在xpath_expr参数中使用~符号,就会产生xpath syntax error (xpath语法错误),通过使用这个方法就可以达到报错注入的目的。

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

floor

当floor(), count(), group by遇到一起在from一个3行以上的表时,就会产生一个主键重复的报错,而此时你把你想显示的信息构造到主键里面,mysql就会通过报错把这个信息给你显示到页面上。

select count(*),concat((payload), floor(rand(0)*2)) as a from information_schema.tables group by a
(select 1 from (select concat(0x7e,database(),0x7e,floor(rand(0)*2)) x,count(*) from users GROUP BY x) b)

floor() : 向下取整。
count() : 常用于计算行的数目
group by: 分组
rand() : 产生一个0-1的随机浮点数
rand(0): 0为随机数种子,0可以替换成任意整数

floor(rand(0)*2)可能为0也可能为1。
floor(rand(0)*2)返回结果是固定的,返回一个序列==0110110011101==

注入语句中查询用到的表内数据必须>=3条
select count(*) from users group by floor(rand(0)*2);
在这里插入图片描述
当表中数据小于3,查询结果是正确的

https://blog.csdn.net/weixin_43901998/article/details/105227678
https://blog.csdn.net/weixin_54894046/article/details/124940161
https://blog.csdn.net/weixin_46634468/article/details/120692475

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。