updatexml报错注入

updatexml(XML_document_string, XPath_string, new_value)函数包含了三个参数。

第一个参数XML_document_string是用于包含 XML 数据的字符串,即把XML数据的字符串写到这里。

第二个参数XPath_string是用于指定 XML 文档中要修改的部分的 XPath 表达式,即在这个位置写XPath 表达式。

第三个参数new_value是用于替换 XPath 表达式选定部分的新值,即在这个位置写替换第二个参数里的部分东西。

本章分享的布尔注入是用的靶场的第三关来演示

 靶场下载链接:GitHub - workcha/sqli-labs-master: sql注入必练习题目

报错注入适用于网页会显示sql语句报错的情况下使用。

第一步:检查网页有没有漏洞,之前在union注入章节已经说了怎么检查网页有没有漏洞,这里就不重复说了。

第二步:查看网页会不会显示sql语法的错误,如下图就显示了sql语法的错误。

ae4cd8aa9fee438480347485ec980170.png

第三步:使用 and (updatexml(1,concat(0x7e,(select database()),0x7e),1))%23 来查看当前数据库的名称。

1a3518d0848a4f11baf6fe0b18c4f3fa.png

如上图所示,在sql语法报错里显示了security这个当前数据库名称,而为什么会显示security这个当前数据库名称是因为利用了updatexml函数的特性,在updatexml函数中的第二个参数位置,写了错误的 XPath 表达式,导致报错,并输出报错的内容 ~security~ 而 ~security~ 这个是通过concat(0x7e,(select database()),0x7e)这个sql语句执行后得来的,其中0x7e是十六进制,对应的字符就是 ~ 这个。

此时,如果我们要查MySQL里的数据库,就只需要把 select database() 改为 select schema_name from information_schema.SCHEMATA limit 0,1 即可查询MySQL里面的第一个数据库的名称。

同样,如果我们要查MySQL里的表,就把 select database() 改为 select table_name from information_schema.tables limit 0,1 即可查询MySQL里面的第一个表的名称。

以上就是updatexml报错注入的使用方法。

注:此updatexml报错注入仅供学习参考。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值