updatexml()报错注入

管理员 2020-02-20 AM 124℃ 5条

首先了解下updatexml()函数

UPDATEXML (XML_document, XPath_string, new_value); 
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 
第三个参数:new_value,String格式,替换查找到的符合条件的数据 
作用:改变文档中符合条件的节点的值

用MySQL测试一下

新建的user表如图:

查看表所属的数据库为test:

构造注入语句:select name from user where id=1 and updatexml(1,concat('~',(select database()),'~'),3);

发现注入成功,成功爆出数据库名。

解释:由于updatexml的第二个参数需要Xpath格式的字符串,以~开头的内容不是xml格式的语法,concat()函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果以错误的形式报出,这样就可以实现报错注入了。

标签: 报错注入

非特殊说明,本博所有文章均为博主原创。

评论啦~



已有 5 条评论


  1. sqli-labs通关手册 – 0verflow技术区

    […] 3.本次使用updatexml报错注入,关于updatexml注入原理 […]

    回复 2020-02-23 14:42
  2. sql-labs第六关 – 0verflow技术区

    […] 3.本次使用updatexml报错注入,关于updatexml注入原理 […]

    回复 2020-02-24 11:37
  3. sqli_labs less19 – 0verflow's blog

    […] 关于updatexml报错注入 […]

    回复 2020-03-02 19:50
  4. sqli-labs less14 – 0verflow's blog

    […] 关于updatexml报错注入 […]

    回复 2020-03-02 19:52
  5. sql-labs less5 – 0verflow's blog

    […] 关于updatexml报错注入 […]

    回复 2020-03-02 19:55