sql注入-updatexml报错注入

由 Miagz 发布

前言

updatexml报错注入是sql注入里面常用的注入方式,写这篇文章之前我也参考了几篇文章,本篇文章以我对updatexml注入的理解来进行详解的(大佬绕路)

函数

我们用到的函数有两个

 1. updatexml()函数
 2. concat()函数

先来看看数据表的结构

我们这里使用的是显错来进行得到我们想要的数据,所以我们的思路就是在insert,update,delete语句中人为构造语法错误,语法大致如下:

mysql>insert into tab(id,user,host) values(6,''value'','192.168.42.244');
mysql>insert into tab(id,user,host) values(6,""value"","192.168.42.244");

如上图所示,user字段是我们可控字段,所以我们填写了'value'与“value”,闭合了单引号/双引号(这里要根据实际情况灵活构造),使其sql语句报错

updatexml函数

updatexml()是mysql对xml文档数据进行查询和修改的xpath函数

updatexml(xml_document,xpath_string,new_value)
第一个参数:xml文档的名称
第二个参数:xml文档的位置(路径),通过xpath定位,xpath定位必须是有效的,否则会发生报错
第三个参数:string格式,替换查找到符合条件的
注意:请看第二参数解释,通过对updatexml报错,来获取我们想要得到数据
payload:

or updatexml(1,concat('~',(version())),1) or 

注意concat()中的'~',为什么要使用'~'呢,因为'~'是xml文档中不允许出现的字符
xml文档不允许出现的字符:

& > < " ' ~ ?

还有很多字符我就不一一概述了
有时候管理员过滤了这些字符,我们该怎么办?我们可以那些字符进行16进制转换
如:

~ = 0x7e
& = 0x26
> = 0x3e
< = 0x3c
" = 0x22
' = 0x27


仅有一条评论

  1. qq
    qq · 2020-04-03 10:07

    详细6666

发表评论