搜索

前言

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

sql注入

版权属于:Miagz
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0
查看目录

目录

来自 《sql注入-updatexml报错注入》
评论

  1. 评论头像
    2020-04-03 回复

    详细6666

MiaGz

博主很懒,啥都没有