mysql报错注入总结

by:holy

基于报错获取信息,有三个常用的报错

今天总结一下:

updatexml()
extractvalue()

mysql中的xpath

我们需要先了解mysql数据库中对xml提供解析操作的xPath,参考链接:MySQL 5.1 提供XML内置支持(XPath)
我们通过文章提供的内容创建了一个xpath测试的数据库:

插入的xml语句

创建成功后doc字段效果如下
image.png

通过该数据库,我们来熟悉xPath语言,参考链接:Xpath语法学习-W3school

EXTRACTVALUE()函数:

ExtractValue(xml_document,xpath_string)
第一个参数:xml_document,为xml文档对象名称,从前文中可以看出是x库的doc字段
第二个参数:xpath_string:xpath语法
image.png

从图中语句我们可以理解,EXTRACTVALUE函数通过xpath读取到了xml <initial>J</initial>节点中的作者名字。

其中xpath定位语句必须是正确的,不然会产生错误,数据库会提示xpath语法错误。他会把这个报错信息显示出来,那么我们把xpath语句替换成想要查询的数据库语句,顺带着就把要想的信息通过xpath语法报错而显示了出来,结果如图所示:

image.png

从图中可以看出 version() 语句成功执行了,只是显示位有问题,后面我们使用concat语句进行拼接使报错语句完整的显示出来:

image.png

那么version()部分的内容就变成可以任意构造的sql语句了,但是!xpath报错组多显示32个字节!

updatexml()函数:

updatexml(xml_document,xpath_string,new_value)
第一个参数:xml_document,为xml文档对象名称,是数据库x库的doc字段
第二个参数:xpath_string:xpath语法
第三个参数:new_value:替换查找到的符合条件的字符(string)
image.png

从图中可以看出:

<initial>J</initial> 节点的数据替换成了:替换的内容

与EXTRACTVALUE()相同,通过xpath报错顺带写成要查询的数据库语句显示出来:


image.png

从图中可以看出 version() 语句成功执行了,只是显示位有问题,后面我们使用concat语句进行拼接使报错语句完整的显示出来:
image.png

构造查询

image.png

通过图中划线部分可以任意构造报错注入查询

database()               //获取当前数据库
version()                //获取数据库版本
user()                   //获取用户
@@datadir                //获取数据库路径
@@version_compile_os     //获取操作系统
@@basedir                //mysql安装路径
session_user()           //获取连接数据库的用户名
current_user()           //获取当前用户名
system_user()            //获取系统用户名

参考文章:
Xpath语法学习-W3school
MySQL 5.1 提供XML内置支持XPath
报错注入分析之updatexml注入

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,308评论 4 123
  • 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理...
    小灰辉先生阅读 1,355评论 0 3
  • -----转载----- 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? ...
    花开沉浮阅读 7,475评论 4 88
  • 目录: 0x00 mysql一般注入(select) 0x01 mysql一般注入(insert、update) ...
    JasonChiu17阅读 2,102评论 0 0
  • 一个八位二进制数,所有位都用来代表数值的数叫做无符号数,设立了符号位得数叫做有符号数。其中在有符号数中,最高位为_...
    无根草儿阅读 1,491评论 1 8